Yii2 + ajax 不起作用


Yii2 + ajax not working

我尝试使用有关yii和ajax的答案,但没有找到工作考试。我在 yii2 bacis 视图中的脚本/站点/关于.php:

<script>
    function myFunction()
    {
        $.ajax({
            url: '<?php echo Yii::$app->request->baseUrl . '/controllers/SiteController/sample' ?>',
            type: 'post',
            data: {
                searchname: 10,
                searchby: 25,
                _csrf: '<?= Yii::$app->request->getCsrfToken() ?>'
            },
            success: function (data) {
                console.log(data.search);
                console.log(data.code);
            }
        });
    }
</script>

我在站点控制器中的函数:

   public function actionSample() {
        if (Yii::$app->request->isAjax) {
            $search = "some-string";
            $code = 20;
            'Yii::$app->response->format = 'yii'web'Response::FORMAT_JSON;
            return [
                'search' => $search,
                'code' => $code,
            ];
        }
    }

我在浏览器OK中看到来自ajax的帖子。

 POST http://localhost/web/controllers/SiteController/sample    
    200 OK

但是卷轴不回答.我得到:"未定义"。可能是网址有问题?但我尝试了其他: Yii::$app->request->baseUrl . '/controllers/sample .它也不起作用(

如果

视图属于SiteController的操作,您应该改用/site/sample或仅使用sample

$.ajax({
    url: '/site/sample',
    ...
});

同样,将 JavaScript 放在 Yei 中不受欢迎的script标签中。您应该至少使用 registerJs 或 registerJsFile 或资产(推荐)。官方指南中有关于资产和客户端脚本的专门部分。

还要确保您的服务器配置为访问web/index.php以进行正确的工作。

更新:我们更深入地调查了问题,原因是漂亮的网址没有启用。将其添加到应用程序配置中解决了问题:

'urlManager' => [
    'showScriptName' => false,
    'enablePrettyUrl' => true,
],