我有一個jQuery $ .ajax()函數的小問題。jquery - 返回值使用ajax成功的結果
我有一個表單,每次單擊單選按鈕或從下拉菜單中進行選擇時都會使用所選值創建一個會話變量。
現在 - 我有一個下拉菜單有4個選項 - 第一個(帶有標籤None)有一個值=「」其他人有他們的ID。
我想要發生的是無選項(帶空白值)刪除會話和其他創建一個,但只有具有此特定選擇名稱的會話尚不存在 - 因爲所有其他選項都具有相同分配給它的金額 - 它只是表示選擇了哪一個。
我不知道如果是有道理的 - 但看看代碼 - 也許這將使它更清晰:
$("#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選擇菜單觸發「的變化「我們從一些計算元素中獲得了一些值。
我們從我們的select中獲得選項的標籤屬性,它存儲要添加到總數中的值,選擇名稱以創建與此名稱和值的會話,以稍後檢查選中哪一個。
現在我們檢查val ==「」(它將表明None選項已被選中)並且我們從總數中扣除金額以及使用select的名稱刪除會話。
之後就是問題出現的地方 - 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');
}
});
}
現在 - 問題是 - 我不知道是否使用「迴歸」將會從函數返回的結果 - 因爲它似乎沒有不工作 - 但是,如果我將「數據」放入警報的成功部分 - 它似乎會返回正確的值。
有誰知道如何從函數返回值,然後在下一個語句中比較它?
由於球員 - 我已經嘗試了以下列方式:
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(數據){ 結果=數據; }
結果 - 是全局變量 - 這我那麼想讀:
$("#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();
});
但由於某種原因 - 這是行不通的 - 任何想法?
可能重複[如何返回從AJAX調用的響應?( http://stackoverflow.com/questions/14220321/how-to-return-the-response-from-an-ajax-call) – Bergi 2013-04-15 22:22:38
'我有一個jQuery的小問題....'這是最長的小問題我曾見過......;) – prageeth 2015-05-26 13:47:13