@prokopov-vi

Как правильно реализовать ajax в yii2?

Нужно реализовать jQuery.ajax в проектеyii2 advanced.

Проблема возникала при установки в url свойства jQuery метода ajax.

<script>
    $(document).ready(function () {
        $(".category-div").click(function () {
            $.ajax({
                url: "../../test.php",
                dataType: "html",
                data: "id="+this.id,
                success: function(data){
                    $("#conteiner").html(data);
                },
                error: function () {
                    $("#conteiner").html("ERROR");
                }
            });
        });
    });
</script>


Проблема возникает когда в url устанавливается файл, который не находиться в webдиректории frontend.
То есть, в примере, который я привел - все работает, но если изменить путь к примеру на: url: /common/widget/views/test.phpили даже /frontend/views/blog/test.php (при условии, что такой файл там есть, конечно), выбрасывает ошибку 404 .

Почему так происходит ? Почему не можно ссылаться на файлы с любой директории ?

Мало того, всё работает, когда реализовать файл test.php:
<?php

?>
<!DOCTYPE html>
<html>
<head>
	<title>exa</title>
</head>
<body>

<?php

   return " <b>Получены параметры с сервера: </b> id = ".$_GET['id'];

?>
</body>
</html>


Но когда делать так:
<?php

?>
<!DOCTYPE html>
<html>
<head>
	<title>exa</title>
</head>
<body>

<?php

   return " <b>Получены параметры с сервера: </b> id = ". Yii::$app->request->get('id');


?>
</body>
</html>


Выбрасывает ошибку:

GET portfolio/test.php?id=4 500 (Internal Server Error) jquery.js:9203


Прошу подсказки.
Как правильно реализовать ajax в Yii2???
  • Вопрос задан
  • 8509 просмотров
Пригласить эксперта
Ответы на вопрос 1
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
1. Откуда взялось php на конце, если это yii2 со своим прекрасным urlManager?
2.
/frontend/views/blog/test.php
это наверное путь, а не url.
3. Почему бы не пользоваться средствами YII2
$this->registerJs('
$(".category-div").click(function () {
            $.ajax({
                url: "'.\yii\helpers\Url::toRoute(['blog/test','id'=>$someid]).'",
                dataType: "html",
                data: "id="+this.id,
                success: function(data){
                    $("#conteiner").html(data);
                },
                error: function () {
                    $("#conteiner").html("ERROR");
                }
            });
        });
');
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы