मुझे आज उसी उपयोग के मामले से निपटना पड़ा। मैं जिस ऐप पर काम कर रहा हूं उसमें ये लंबे समय से चल रहे अजाक्स कॉल हैं जो 1 से बाधित हो सकते हैं) उपयोगकर्ता दूर नेविगेट कर रहा है या 2) किसी प्रकार का अस्थायी कनेक्शन / सर्वर विफलता है। मैं चाहता हूं कि त्रुटि हैंडलर केवल कनेक्शन / सर्वर विफलता के लिए चलाए और न कि उपयोगकर्ता को नेविगेट करने के लिए।
मैंने पहली बार एलेस्टेयर पिट्स के उत्तर की कोशिश की, लेकिन यह काम नहीं आया क्योंकि दोनों अनुरोधों और कनेक्शन विफलता ने स्थिति कोड निर्धारित किया और 0. के लिए तैयार किया। अगला, मैंने sieppl के उत्तर की कोशिश की; यह भी काम नहीं किया क्योंकि दोनों मामलों में, कोई प्रतिक्रिया नहीं दी गई है, इस प्रकार कोई हेडर नहीं है।
मेरे लिए काम करने वाला एकमात्र समाधान window.onbeforeunload के लिए एक श्रोता सेट करना है, जो यह इंगित करने के लिए एक वैश्विक चर सेट करता है कि पृष्ठ अनलोड किया गया है। त्रुटि हैंडलर तब जांच कर सकता है और केवल त्रुटि हैंडलर को कॉल कर सकता है यदि पृष्ठ अनलोड नहीं किया गया है।
var globalVars = {unloaded:false};
$(window).bind('beforeunload', function(){
globalVars.unloaded = true;
});
...
$.ajax({
error: function(jqXHR,status,error){
if (globalVars.unloaded)
return;
}
});