मुझे jquery $ .ajax () फ़ंक्शन के साथ एक छोटी सी समस्या है।
मेरे पास एक ऐसा फॉर्म है जहां रेडियो बटन पर प्रत्येक क्लिक या ड्रॉपडाउन मेनू से चयन चयनित मान के साथ एक सत्र चर बनाता है।
अब - मेरे पास ड्रॉपडाउन मेनू में से एक है जिसमें 4 विकल्प हैं - पहले एक (लेबल नहीं के साथ) का एक मूल्य है = "" अन्य में अपना आईडी है।
जो मैं करना चाहता हूं वह सत्र को हटाने के लिए और खाली करने के लिए कोई विकल्प नहीं है (रिक्त मान के साथ), लेकिन केवल अगर यह विशिष्ट चयनित नाम वाला सत्र पहले से मौजूद नहीं है - क्योंकि अन्य सभी विकल्पों में एक ही राशि है जो इसे सौंपा गया है - यह सिर्फ संकेत दे रहा है कि कौन सा चुना गया था।
मुझे यकीन नहीं है कि अगर यह समझ में आता है - लेकिन कोड पर एक नज़र है - शायद यह इसे स्पष्ट कर देगा:
$("#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 मेनू मेनू "परिवर्तन" का चयन करता है, तो हमें गणना के लिए कुछ तत्वों से कुछ मूल्य मिलते हैं।
हमें अपने चयन से विकल्प की लेबल विशेषता मिलती है, जो कुल में जोड़े जाने वाले मूल्य को संग्रहीत करता है, इस नाम के साथ सत्र बनाने के लिए चयन का नाम और बाद में जांच करने के लिए मूल्य जो एक चुना गया था।
अब - हम जांचते हैं कि क्या घाटी == "" (जो इंगित करेगा कि कोई भी विकल्प नहीं चुना गया है) और हम कुल से राशि काटते हैं और साथ ही सेलेक्ट के नाम के साथ सत्र हटाते हैं।
इसके बाद जहां समस्या शुरू होती है - वहीं बयान।
Else - हम यह जाँचना चाहते हैं कि क्या isSession () हमारे चयनकर्ता के नाम के साथ कार्य करता है 0 या 1 - यदि यह 0 देता है तो हम लेबल विशेषता में संग्रहीत मान को जोड़ते हैं, लेकिन यदि यह 1 रिटर्न देता है - तो यह सुझाव देगा वह सत्र पहले से ही मौजूद है - फिर हम केवल इस सत्र का मान बदलकर इसे बदल देते हैं - लेकिन इसमें राशि नहीं जोड़ी जाती है।
अब पेशे समारोह इस तरह दिखता है:
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 () फ़ंक्शन:
function updateResult (data) {result = 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();
});
लेकिन किसी कारण से - यह काम नहीं करता है - कोई विचार?