簡體   English   中英

AJAX呼叫無法發送請求Yii2

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM