मैं निम्नलिखित धागा पर ध्यान दिया हैअजाक्स फाइल अपलोड रिटर्न स्थिति कोड 0 तैयार राज्य 0 (केवल कभी कभी)
हालांकि मैं एक निश्चित उत्तर नहीं मिल सका और मैं गंभीर संकट खोजने की कोशिश कर रहा हूँ मेरे मुद्दे का स्रोत इसलिए मैं उम्मीदों में यहां पोस्ट कर रहा हूं कि कोई मुझे सही दिशा में इंगित कर सकता है।
मेरे कोड में मैं एक कोणीय HTTP पोस्ट कर रहा हूं जो केवल मूल JSON डेटा भेजता है, फिर सफलता कॉलबैक के भीतर मैं उसी सर्वर पर फ़ाइलों को अपलोड करने के लिए AJAX का उपयोग कर रहा हूं। (मैं जानता हूँ कि मैं jQuery और कोणीय नहीं का उपयोग करना चाहिए लेकिन मैं पल के लिए इसे बदल नहीं सकते)
यह इस
var deferred = $q.defer()
// first post
$http.post(url,payload,{params: params, headers: headers)
.then(function(response) {
uploadFiles(response,deferred);
// I am also sending google analytics events here
}, function(error) {
// do error stuff
}
return deferred.promise;
// upload files function
function uploadFiles(response,deferred){
$ajax({
type: 'POST',
processData: false,
contentType: false,
data: data // this new FormData() with files appended to it,
url: 'the-endpoint-for-the-upload',
dataType: 'json',
success: function(data) {
// do success stuff here
deferred.resolve(data);
},
error: function(jqXHR, textStatus, errorThrown) {
var message = {};
if (jqXHR.status === 0) {
message.jqXHRStatusIsZero = "true";
}
if (jqXHR.readyState === 0) {
message.jqXHRReadyStateIsZero = "true";
}
if (jqXHR.status === '') {
message.jqXHRStatusIsEmptyString = "true";
}
if (jqXHR.status) {
message.jqXHRStatus = jqXHR.status;
}
if (jqXHR.readyState) {
message.jqXHRReadyState = jqXHR.readyState;
}
if (jqXHR.responseText) {
message.jqXHR = jqXHR.responseText;
}
if (textStatus) {
message.textStatus = textStatus;
}
if (errorThrown) {
message.errorThrown = errorThrown;
}
message.error = 'HTTP file upload failed';
logError(message);
deferred.resolve(message);
}
}
})
}
नहीं मेरे सटीक कोड लेकिन लगभग ठीक उसी तरह दिखता है।
मुद्दा यह है कि लगभग हर समय काम करता है, लेकिन शायद कुछ सौ में तीन या चार विफल हो जाएंगे। असफल होने का मतलब है कि त्रुटि अपलोडर फ़ंक्शन फ़ाइल अपलोड फ़ंक्शन पर कॉल किया जाता है और फ़ाइलें अपलोड नहीं होती हैं।
मुझे ऐसा होने पर jqXHRStatus 0 और jqXHRReadyState 0 मिलता है।
एक ही रास्ता मैं इस मुद्दे को दोहराने के लिए सक्षम हूँ ब्राउज़र जब अनुरोध संसाधित किया जा रहा है पर ताज़ा मारकर है, लेकिन उन की सलाह दी है कि वे यह नहीं कर रहे हैं
(100% की पुष्टि इस किया है, हालांकि)क्या मेरे कोड में शायद कोई गंभीर दोष है जिसे मैं नहीं देख रहा हूं? शायद चारों ओर स्थगित चर गुजरना अच्छा अभ्यास नहीं है? या किसी अन्य तरीके से AJAX अनुरोध रद्द कर दिया जा रहा है कि मैं विचार नहीं कर रहा हूं? एक ही समय में Google Analytics ईवेंट भेजना हस्तक्षेप कर सकता है?
कोई सलाह बहुत अच्छी होगी और अगर आप इस मुद्दे पर अधिक जानकारी चाहते हैं तो कृपया मुझे बताएं।
अगर पेज या हो सकता है यह पूरी तरह से लोड नहीं है और अनुरोध पहले से ही शुरू होता है, तो अनुरोध के दौरान चालू किया जाये यह हो सकता है? ऐसा तब हो सकता है जब डेटा ओके नहीं है? क्या कुछ घटनाएं निकाल दी गई हैं जो अनुरोध तोड़ सकती हैं? आप निश्चित रूप से कुछ भी सच नहीं है? क्योंकि प्रसंस्करण के दौरान मुझे कुछ अनुरोध तोड़ना चाहिए। – Blackbam
आप बैक-एंड त्रुटियों को कैसे प्रबंधित करते हैं? हो सकता है कि बैकएंड कोड भी दिखाएं – alepeino
यदि आप ब्राउज़र पर रीफ्रेश मारकर समस्या को दोहराने के दौरान ब्राउज़र devtools कंसोल देखते हैं तो आपको अधिक जानकारी मिल सकती है। नेटवर्क टैब में और जानकारी भी हो सकती है (एक्सएचआर विकल्प) – KorreyD