मैं एकाधिक यूआरएल से JSON प्राप्त करने के लिए नीचे दिए गए कोड का उपयोग कर रहा हूं। हालांकि, जब कोई URL विफल हुआ या 404 प्रतिक्रिया प्राप्त करता है तो निष्पादन कार्य नहीं करता है। मैंने jquery दस्तावेज़ पढ़ा और मुझे पता है कि "तब" निष्पादित होना चाहिए चाहे कोई कॉल विफल हो। आप, सफलताओं और असफलताओं की परवाह किए बिना एक ही कॉलबैक फोन का उपयोग करने के deferred.always()
(documentation) चाहते हैं
$.when.apply($, calls).then(function() {
do_something(data);
}, function() {
// something failed
});
:
var data = {};
var calls = [];
for (var i in funcs) {
calls.push(
$.getJSON(base_url+i,
(function(i) {
return function(d) {
data[i] = d;
};
}(i))
)
);
}
$.when.apply($,calls).then(function() {
do_something(data);
});
क्या आपको सभी अनुरोधों के समाप्त होने पर यह नियंत्रित करने की आवश्यकता है या यह प्रत्येक अनुरोध के लिए हो सकता है? –
संख्या।मैं सिर्फ एकत्रित डेटा की सरणी प्राप्त करना चाहता हूं। इसलिए यदि इस यूआरएल में कोई डेटा नहीं है तो अनदेखा करें। लेकिन सबसे महत्वपूर्ण बात यह है कि मैं do_something (डेटा) बनाना चाहता हूं; – user2581550
निष्पादित करें यदि आप AJAX कॉल में से एक विफल होने पर भी 'do_something (डेटा)' चलाने के लिए चाहते हैं, तो '$ .when()' उपयोग करने का सही तरीका नहीं हो सकता है। जैसे ही कॉल में से एक विफल हो जाता है, यह विफल हो जाता है (और इसे हल करने के बजाय इसे वापस किए गए वादे को अस्वीकार करता है)। –