我尝试过使用关于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
。它也没有用(
答案 0 :(得分:1)
如果视图属于/site/sample
的操作,则应使用sample
代替SiteController
或仅使用$.ajax({
url: '/site/sample',
...
});
:
script
在Yii中,不欢迎将JavaScript放在web/index.php
标记内。您应该至少使用registerJs或registerJsFile或资产(推荐)。官方指南中有关于assets和client scripts的专门章节。
还要确保您的服务器已配置为访问'urlManager' => [
'showScriptName' => false,
'enablePrettyUrl' => true,
],
以获得正确的工作。
更新:我们更深入地调查了问题,原因是没有启用漂亮的网址。将此添加到应用程序配置解决了问题:
UserPrincipal.SetPassword