gpt4 book ai didi

javascript - Yii2 AJAX调用无法发送请求

转载 作者:行者123 更新时间:2023-12-02 23:07:53 25 4
gpt4 key购买 nike

我认为有一个 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);
},
});
})");
?>

我需要向 AdminControlleractionBlockUsers 函数发送请求,如下所示:

public function actionBlockUsers()
{
if (Yii::$app->request->isAjax) {
print("success");
}
}

问题是我无法发送请求。检查 XHR 也没有显示任何内容。我该如何解决这个问题?

最佳答案

您需要将 Yii::$app->request->getCsrfToken() 括在引号中,因为它通常会在字符串中包含 == ,这会破坏如果脚本不在 qutotes 内,使用 javascript 时更好的方法是使用 yii.js 来使用 yii.getCsrfParam() 获取 csrf token 和参数名称和 yii.getCsrfToken(),而不是硬编码 _csrf

您还应该尝试使用 hereDOC语法以获得更好的可读性。

因此,将您的 View 中的代码替换为以下内容

$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);

关于javascript - Yii2 AJAX调用无法发送请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57506614/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com