मेरे पास एक ऐसा एप्लिकेशन है जिसे मैं लिख रहा हूं जो सर्वर में कैश किए गए ऑब्जेक्ट पर डेटा संशोधित करता है। संशोधनों को AJAX कॉल के माध्यम से किया जाता है जो मूल रूप से उस ऑब्जेक्ट के गुणों को अद्यतन करता है। जब उपयोगकर्ता काम कर रहा है, तो मेरे पास मूल 'सहेजें परिवर्तन' बटन है जो उन्हें डेटा को सहेजने और कैश किए गए ऑब्जेक्ट को फ़्लश करने की अनुमति देता है।jQuery अजाक्स कॉल - सफलता पर सेट वैरिएबल वैल्यू
उपयोगकर्ता की सुरक्षा के लिए, मैं उन्हें चेतावनी देना चाहता हूं कि पृष्ठ से दूर नेविगेट करने का प्रयास करें जब सर्वर ऑब्जेक्ट में संशोधनों को सहेजा नहीं गया है। इसलिए, मैंने IsInitialized नामक एक वेब सेवा विधि बनाई है जो परिवर्तनों को सहेजा गया है या नहीं, इस पर आधारित वास्तविक या गलत लौटाएगा। अगर वे सहेजे नहीं गए हैं, तो मैं उपयोगकर्ता को संकेत देना चाहता हूं और उन्हें अपने नेविगेशन अनुरोध को रद्द करने का मौका देना चाहता हूं।
यहां मेरी समस्या है - हालांकि मेरे पास कॉल सही तरीके से काम कर रहे हैं, मुझे लगता है कि एजेक्स सफलता कॉल को कॉलबैक फ़ंक्शन पर चर वैल्यू सेट करने के लिए नहीं लगता है। मेरे पास अब कोड है।
////Catches the users to keep them from navigation off the page w/o saved changes...
window.onbeforeunload = CheckSaveStatus;
var IsInitialized;
function CheckSaveStatus() {
var temp = $.ajax({
type: "POST",
url: "URL.asmx/CheckIfInstanceIsInitilized",
data: "{}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(result) {
IsInitialized = result.d;
},
error: function(xmlHttpRequest, status, err) {
alert(xmlHttpRequest.statusText + " " + xmlHttpRequest.status + " : " + xmlHttpRequest.responseText);
}
});
if (IsInitialized) {
return "You currently have unprocessed changes for this Simulation.";
}
}
मुझे लगता है कि मैं सफलता कॉलबैक को अनुचित तरीके से उपयोग करने का प्रयास कर रहा हूं। मैं सफलता कॉलबैक पर जावास्क्रिप्ट चर कैसे सेट करूं ताकि मैं यह तय कर सकूं कि उपयोगकर्ता को w/सहेजे गए परिवर्तन संदेश को संकेत दिया जाना चाहिए या नहीं?
जैसा कि अभी बताया गया था, मैं एक एसिंक्रोनस कॉल कर रहा हूं, जिसका अर्थ है कि शेष विधि को मेरे विधि रिटर्न से पहले बुलाया जाता है। क्या AJAX कॉल का उपयोग करने का कोई तरीका है, लेकिन अभी भी खिड़की पकड़ो .ऑनलोड घटना? (सिंक्रोनोस AJAX बनाने के बिना)
बस कह रही है कि 5 साल के अतीत से मेरा एक सवाल "डुप्लिकेट के रूप में चिह्नित" किया गया था एक ई-मेल मिला है। "मूल" प्रश्न केवल एक वर्ष पुराना है। गो-टाइम टाइम मशीनें! :) यह एक और गहराई से प्रतिक्रिया है। – Nathan