我有一个jQuery $ .ajax()函数的小问题。
我有一个表单,其中每次单击单选按钮或从下拉菜单中进行选择都会创建具有所选值的会话变量。
现在-我有一个下拉菜单,其中有4个选项-第一个菜单(标签为None)具有value =“”,其他具有其ID。
我要执行的操作是使用None选项(具有空白值)删除会话,并使用其他选项创建会话,但是仅当具有该特定选择名称的会话不存在时-因为所有其他选项都分配了相同的数量-只是表明选择了哪一个。
我不确定这是否有意义-但请看一下代码-也许会更清楚:
$("#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();
});
所以-首先,当#add_ons选择菜单触发“更改”时,我们将从一些元素中获取一些值进行计算。
我们从选择中获得选项的标签属性,该选择存储将要添加到总数中的值,选择的名称(使用此名称创建会话)和值,以供以后检查选择了哪个。
现在-我们检查val ==“”(这表明已选择“无”选项),然后从总数中扣除金额,并删除带有选择名称的会话。
在这之后问题就开始了-else语句。
否则-我们要检查具有选择器名称的isSession()函数是否返回0或1-如果返回0,则将存储在label属性中的值加到总计中,但是如果返回1-这将表明该会话已经存在-那么我们只能通过重新创建来更改此会话的值-但不会添加该金额。
现在,isSession函数如下所示:
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');
        }
    });
}
现在-问题是-我不知道使用“ return”是否会从函数中返回结果-因为它似乎不起作用-但是,如果我将“ data”放在success:部分中,警告-它似乎返回正确的值。
有谁知道如何从函数中返回值,然后在下一条语句中进行比较?
谢谢大家-我已经尝试过以下方式:
function isSession(selector) {
    $.ajax({
        type: "POST",
        url: '/order.html',
        data: ({ issession : 1, selector: selector }),
        dataType: "html",
        success: function(data) {
            updateResult(data);
        },
        error: function() {
            alert('Error occured');
        }
    });
}
然后updateResult()函数:
函数updateResult(data){结果=数据;}
结果-是全局变量-然后尝试读取:
$("#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 {
            isSession(name);
            if(result == 0) {
                var price = parseInt(order_price_addon) + parseInt(add);
            }   
            setSession(name, val);              
        }
        $(".order_price_addon").html(price);    
        setSession('order_price_addon', price);         
        updateTotal();
    });
但由于某种原因-它不起作用-任何想法?