如何在yii中向控制器函数发出Ajax请求

时间:2018-05-22 13:15:52

标签: javascript ajax yii2

这是我的js代码:

var durl = "<?php echo Yii::$app->getUrlManager()->getBaseUrl(); ?>/Site/ReqAJAX";

$.ajax({ 
    type: "POST", 
    url: durl,
    data: {_csrf:'<?=\Yii::$app->request->csrfToken?>'},
    dataType: "json",
    contentType: "application/json; charset=utf-8",
    success: function(msg) { 
        alert("Success "+msg); 
    },
    error: function(err) {   
        alert(JSON.stringify(err)); 
    } 
});

这是我得到的错误:

enter image description here

1 个答案:

答案 0 :(得分:0)

我通常在PHP中创建JS而不是相反的方式,并在JS块中分配我需要的所有必需变量以提高可读性。它通常可以帮助我更容易地找到错误。此外,我使用Yii2 UrlManager来创建网址,而不是JS,因为这将确保网址是正确的。 (当然,正确设置;)

也许这有助于找到问题。

<?php
$url = Url::to(['/site/req-ajax']);
$data = json_encode([Yii::app()->request->csrfTokenName => Yii::app()->request->csrfToken]);
$js =<<<JS
$.ajax({ 
    type: "POST", 
    url: "$url",
    data: $data,
    dataType: "json",
    contentType: "application/json; charset=utf-8",
    success: function(msg) { 
        alert("Success "+msg); 
    },
    error: function(err) {   
        alert(JSON.stringify(err)); 
    } 
});
JS;
$this->registerJs($js);