我尝试使用有关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,
],