亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Yii2 302 重定向 jQuery AJAX 請求,重定向整個頁面

Yii2 302 重定向 jQuery AJAX 請求,重定向整個頁面

PHP
RISEBY 2022-01-08 17:11:19
我有一個動作:public function actionAjaxLoadBasketSmall() {    $this->enableCsrfValidation = false;    return $this->renderPartial('@app/views/basket/_small');}一些 JavaScriptfunction loadBasketSmall() {    $.ajax({        method: "POST",        url: "/basket/ajax-load-basket-small",        dataType: "html",        beforeSend: function () {            $('#basketSmall').addClass('loading');        },        complete: function (data) {            $("#basketSmall").replaceWith(data.responseText);        }    });}從此函數調用,例如:function handleProductTileButton(e) {    e.preventDefault();    var input = $(this);    $('#basketSmall').addClass('loading');    $.ajax({        method: "GET",        url: "/basket/ajax-add-product",        dataType: "html",        data: {            productId: input.data('product-id'),            quantity: 1,        },        beforeSend: function () {            input.addClass('loading');        },        complete: function (data) {            $('.top-bar .search-results').html(data.responseText);            input.removeClass('loading');            loadBasketSmall();        }    });}每當 Ajax 調用完成時,整個頁面都會被重定向到/basket/ajax-load-basket-small這些是響應標頭。注意 302 響應代碼。
查看完整描述

2 回答

?
嗶嗶one

TA貢獻1854條經驗 獲得超8個贊

所以穆罕默德建議后的最終解決方案


語言資產.php


<?php


namespace frontend\assets;


use yii\web\AssetBundle;


/**

 * Language application asset bundle.

 */

class LanguageAsset extends AssetBundle

{

    public function init() {

        parent::init();

        $view = \Yii::$app->controller->view;

        $language = \Yii::$app->language;

        $js = "const LANG='{$language}';";

        $view->registerJs($js, $view::POS_HEAD);

    }

}

在我的布局文件中,我添加了:


use frontend\assets\LanguageAsset;


LanguageAsset::register($this);


查看完整回答
反對 回復 2022-01-08
?
白衣染霜花

TA貢獻1796條經驗 獲得超10個贊

因此,這取決于使服務器發送重定向響應的語言檢測。


為了解決這個問題,我將此代碼添加到我的基本控制器類中


public function init() {

    parent::init();

    $this->initJsLang();

}


public static function jsDefineLang() {

    return "const LANG = '" . \Yii::$app->language ."';";

}


protected function initJsLang() {

    $this->getView()->registerJs(static::jsDefineLang(), \yii\web\View::POS_HEAD);

}

并相應地更新了我的 JavaScript:


function handleProductTileButton(e) {

    e.preventDefault();

    var input = $(this);

    $('#basketSmall').addClass('loading');

    $.ajax({

        method: "GET",

        url: "/" + LANG + "/basket/ajax-add-product",

        dataType: "html",

        data: {

            productId: input.data('product-id'),

            quantity: 1,

        },

        beforeSend: function () {

            input.addClass('loading');

        },

        complete: function (data) {

            $('.top-bar .search-results').html(data.responseText);

            input.removeClass('loading');

            loadBasketSmall();

        }


    });

}


function loadBasketSmall() {

    $.ajax({

        method: "GET",

        url: "/" + LANG + "/basket/ajax-load-basket-small",

        dataType: "html",

        beforeSend: function () {

            $('#basketSmall').addClass('loading');

        },

        complete: function (data) {

            $("#basketSmall").replaceWith(data.responseText);

        }


    });

}


查看完整回答
反對 回復 2022-01-08
  • 2 回答
  • 0 關注
  • 323 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號