मैं सभी AJAX अनुरोधों के लिए एक वैश्विक ईवेंट हैंडलर पंजीकृत करना चाहता हूं, ताकि मैं से से पहले ईवेंट ईवेंट को रोक और संभाल सकूं, विशिष्ट ईवेंट हैंडलर उन्हें प्राप्त करता है।ईवेंट हैंडलर से पहले मैं jQuery में AJAX प्रतिक्रियाओं को कैसे रोक सकता हूं?
उदाहरण के लिए, मेरे कोड की तरह कुछ हो सकता है:
$("#placeholder").load("/fragments/userpics");
और मैं एक "पहले" ईवेंट हैंडलर रजिस्टर करने के लिए इतना है कि मैं कर सकता है, उदाहरण के लिए, एक लॉगिन बक्से अगर एक 401 प्रतिक्रिया प्रदर्शित करना चाहते हैं वापस आ गया है, या शायद 503 प्रतिक्रिया होने पर पुनः प्रयास करें।
मैंने सोचा था कि $.ajaxError()
है कि जहां मैं कुछ इस तरह करना होगा, लेकिन जाहिरा तौर पर यह ईवेंट हैंडलर के बाद ही शुरू हो रहा है।
अद्यतन: ठीक है, यहाँ है कि मैं क्या @genesis की मदद से अब तक मिला है, है:
$.ajaxPrefilter(function(options, originalOptions, jqXHR) {
var success = options.success;
options.success = function(data, textStatus, jqXHR) {
// override success handling
if(typeof(success) === "function") return success(data, textStatus, jqXHR);
};
var error = options.error;
options.error = function(jqXHR, textStatus, errorThrown) {
// override error handling
if(typeof(error) === "function") return error(jqXHR, textStatus, errorThrown);
};
});
कुछ परीक्षण करने के बाद, ऐसा लगता है कि मैं भी options.complete
ओवरराइड करने के लिए की आवश्यकता होगी लग रहा है।
हालांकि, यह अभी भी सभी अड्डों को कवर नहीं करता है, क्योंकि आप सीधे jqXHR ऑब्जेक्ट पर ईवेंट संलग्न कर सकते हैं और options
बदलकर इस मामले में सहायता नहीं करेंगे।
कोई सुझाव?
http://stackoverflow.com/a/10796951/1509853? – oCcSking