[英]AJAX call unable to send a request Yii2
我認為我有一個AJAX通話。 它的代碼如下:
<?php
$this->registerJs("
$(document).on('click','.btn-block',function(){
var id = $(this).parents('.user-tr').attr('id');
$.ajax({
url: '" . Yii::$app->request->baseUrl . "admin/block-users',
type: 'POST',
data: {id : id,_csrf : " . Yii::$app->request->getCsrfToken() . "},
success: function (data) {
console.log(data);
},
});
})");
?>
我需要向AdminController
actionBlockUsers
函數發送一個請求,如下所示:
public function actionBlockUsers()
{
if (Yii::$app->request->isAjax) {
print("success");
}
}
問題是我無法發送請求。 檢查XHR也不顯示任何內容。 我該如何解決這個問題?
您需要將Yii::$app->request->getCsrfToken()
括在引號中,因為它通常在字符串中包含==
,如果不在四位數內,它將破壞腳本,使用javascript時更好的方法是使用yii.js
使用yii.getCsrfParam()
和yii.getCsrfToken()
來獲取csrf令牌和參數名稱,而不是硬編碼_csrf
。
另外,您應該嘗試使用hereDOC語法以提高可讀性。
因此,在您的視圖中將代碼替換為以下代碼
$baseUrl=\yii\helpers\Url::base(true);
$js=<<<JS
$(document).on('click','.btn-block',function(e){
var id = $(this).parents('.user-tr').attr('id');
let data={id : id};
data[yii.getCsrfParam()]=yii.getCsrfToken();
$.ajax({
url: '{$baseUrl}/admin/block-users',
type: 'POST',
data: data,
success: function (data) {
console.log(data);
},
});
})
JS;
$this->registerJs($js, View::POS_READY);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.