第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

jQuery-成功使用Ajax結(jié)果返回值

jQuery-成功使用Ajax結(jié)果返回值

慕桂英3389331 2019-11-12 10:17:11
我有一個jQuery $ .ajax()函數(shù)的小問題。我有一個表單,其中每次單擊單選按鈕或從下拉菜單中進(jìn)行選擇都會創(chuàng)建具有所選值的會話變量。現(xiàn)在-我有一個下拉菜單,其中有4個選項-第一個菜單(標(biāo)簽為None)具有value =“”,其他具有其ID。我要執(zhí)行的操作是使用None選項(具有空白值)刪除會話,并使用其他選項創(chuàng)建會話,但前提是不存在具有該特定選擇名稱的會話-因為所有其他選項均分配有相同的金額-只是表明選擇了哪一個。我不確定這是否有意義-但請看一下代碼-也許可以使它更清晰:$("#add_ons select").change(function() {        // get current price of the addons        var order_price_addon = $(".order_price_addon").text();        // get price of the clicked radio button from the rel attribute        var add = $(this).children('option').attr('label');        var name = $(this).attr('name');        var val = $(this).val();        if(val == "") {            var price = parseInt(order_price_addon) - parseInt(add);            removeSession(name);        } else {            if(isSession(name) == 0) {                var price = parseInt(order_price_addon) + parseInt(add);            }               setSession(name, val);                      }        $(".order_price_addon").html(price);            setSession('order_price_addon', price);                 updateTotal();});因此-首先,當(dāng)#add_ons選擇菜單觸發(fā)“更改”時,我們將從一些元素中獲取一些值進(jìn)行計算。我們從選擇中獲取選項的標(biāo)簽屬性,該選擇存儲將要添加到總數(shù)中的值,選擇的名稱(使用此名稱創(chuàng)建會話)和值,以供以后檢查選擇了哪個。現(xiàn)在-我們檢查val ==“”(這表明已選擇“無”選項),然后從總數(shù)中扣除金額,并刪除帶有選擇名稱的會話。在這之后,問題開始了-else語句。否則-我們要檢查具有選擇器名稱的isSession()函數(shù)是否返回0或1-如果返回0,則將存儲在label屬性中的值加到總計中,但是如果返回1-這將表明該會話已經(jīng)存在-那么我們只能通過重新創(chuàng)建來更改此會話的值-但不會添加該金額?,F(xiàn)在,isSession函數(shù)如下所示:function isSession(selector) {    $.ajax({        type: "POST",        url: '/order.html',        data: ({ issession : 1, selector: selector }),        dataType: "html",        success: function(data) {            return data;        },        error: function() {            alert('Error occured');        }    });}現(xiàn)在-問題是-我不知道使用“ return”是否會從函數(shù)中返回結(jié)果-因為它似乎不起作用-但是,如果我將“ data”放在success:部分中,警報-它似乎返回正確的值。有誰知道如何從函數(shù)中返回值,然后在下一條語句中進(jìn)行比較?然后updateResult()函數(shù):函數(shù)updateResult(data){結(jié)果=數(shù)據(jù);}但由于某種原因-它不起作用-任何想法?
查看完整描述

3 回答

?
拉莫斯之舞

TA貢獻(xiàn)1820條經(jīng)驗 獲得超10個贊

問題是您不能從異步調(diào)用(如AJAX請求)返回值,并且期望它能正常工作。


原因是等待響應(yīng)的代碼在接收到響應(yīng)時已經(jīng)執(zhí)行。


解決此問題的方法是在回調(diào)內(nèi)部運(yùn)行必要的代碼success:。這樣,它data只有在可用時才能訪問。


function isSession(selector) {

    $.ajax({

        type: "POST",

        url: '/order.html',

        data: ({ issession : 1, selector: selector }),

        dataType: "html",

        success: function(data) {

            // Run the code here that needs

            //    to access the data returned

            return data;

        },

        error: function() {

            alert('Error occured');

        }

    });

}

另一種可能性(實(shí)際上是同一件事)是在success:回調(diào)中調(diào)用一個函數(shù),該函數(shù)在可用時傳遞數(shù)據(jù)。


function isSession(selector) {

    $.ajax({

        type: "POST",

        url: '/order.html',

        data: ({ issession : 1, selector: selector }),

        dataType: "html",

        success: function(data) {

                // Call this function on success

            someFunction( data );

            return data;

        },

        error: function() {

            alert('Error occured');

        }

    });

}


function someFunction( data ) {

    // Do something with your data

}


查看完整回答
反對 回復(fù) 2019-11-12
?
喵喔喔

TA貢獻(xiàn)1735條經(jīng)驗 獲得超5個贊

有很多方法可以獲取jQuery AJAX響應(yīng)。我將與您分享兩種常用方法:


第一:


使用async = false并在函數(shù)內(nèi)返回ajax-object并稍后獲取響應(yīng)ajax-object.responseText


/**

 * jQuery ajax method with async = false, to return response

 * @param  {mix}  selector - your selector

 * @return {mix}           - your ajax response/error

 */

function isSession(selector) {

    return $.ajax({

        type: "POST",

        url: '/order.html',

        data: {

            issession: 1,

            selector: selector

        },

        dataType: "html",

        async: !1,

        error: function() {

            alert("Error occured")

        }

    });

}

// global param

var selector = !0;

// get return ajax object

var ajaxObj = isSession(selector);

// store ajax response in var

var ajaxResponse = ajaxObj.responseText;

// check ajax response

console.log(ajaxResponse);

// your ajax callback function for success

ajaxObj.success(function(response) {

    alert(response);

});

第二:


使用$ .extend 方法并創(chuàng)建一個像ajax這樣的新函數(shù)


/**

 * xResponse function

 *

 * xResponse method is made to return jQuery ajax response

 * 

 * @param  {string} url   [your url or file]

 * @param  {object} your ajax param

 * @return {mix}       [ajax response]

 */

$.extend({

    xResponse: function(url, data) {

        // local var

        var theResponse = null;

        // jQuery ajax

        $.ajax({

            url: url,

            type: 'POST',

            data: data,

            dataType: "html",

            async: false,

            success: function(respText) {

                theResponse = respText;

            }

        });

        // Return the response text

        return theResponse;

    }

});


// set ajax response in var

var xData = $.xResponse('temp.html', {issession: 1,selector: true});


// see response in console

console.log(xData);

您可以根據(jù)需要將其放大...


查看完整回答
反對 回復(fù) 2019-11-12
?
繁星coding

TA貢獻(xiàn)1797條經(jīng)驗 獲得超4個贊

我在這里看到了答案,盡管有幫助,但它們并不是我想要的,因為我不得不更改很多代碼。


對我有用的事情是在做這樣的事情:


function isSession(selector) {

    //line added for the var that will have the result

    var result = false;

    $.ajax({

        type: "POST",

        url: '/order.html',

        data: ({ issession : 1, selector: selector }),

        dataType: "html",

        //line added to get ajax response in sync

        async: false,

        success: function(data) {

            //line added to save ajax response in var result

            result = data;

        },

        error: function() {

            alert('Error occured');

        }

    });

    //line added to return ajax response

    return result;

}

希望可以幫助某人


查看完整回答
反對 回復(fù) 2019-11-12
  • 3 回答
  • 0 關(guān)注
  • 388 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號