Yii2 + ajax无效

时间:2016-01-13 20:36:14

标签: php ajax yii2

我尝试过使用关于yii和ajax的答案,但没有找到工作考试。 我的脚本在yii2 bacis views / site / about.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>

我在SiteController中的功能:

   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,
            ];
        }
    }

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

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

但是控制者没有回答。我得到了:&#34;未定义&#34;。 可能是网址问题?但我尝试了其他: Yii::$app->request->baseUrl . '/controllers/sample。它也没有用(

1 个答案:

答案 0 :(得分:1)

如果视图属于/site/sample的操作,则应使用sample代替SiteController或仅使用$.ajax({ url: '/site/sample', ... });

script

在Yii中,不欢迎将JavaScript放在web/index.php标记内。您应该至少使用registerJsregisterJsFile或资产(推荐)。官方指南中有关于assetsclient scripts的专门章节。

还要确保您的服务器已配置为访问'urlManager' => [ 'showScriptName' => false, 'enablePrettyUrl' => true, ], 以获得正确的工作。

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

UserPrincipal.SetPassword