2011-09-21 20 views
6

मैं अजाक्स कॉल करने के लिए प्रोटोटाइप जेएस ढांचे का उपयोग कर रहा हूं।ब्राउज़र द्वारा अजाक्स कॉल रद्द कर दिया गया

new Ajax.Request('/myurl.php', {method: 'post', postBody: 'id='+id+'&v='+foo, onSuccess: success, onFailure: failed}); 

function success(ret) { 
console.log("success",ret.readyState, ret.status); 
} 
function failed(ret) { 
console.log("failed",ret.readyState, ret.status); 
} 

अधिकांश समय, यह ठीक काम करता है और सफलता समारोह सफारी पर समय की 200 के बारे में 5% की एक स्थिति कोड सफलता समारोह एक स्थिति कोड के साथ कहा जाता है के साथ कहा जाता है: यहाँ मेरी कोड है 0. में, जब मैं वेब इंस्पेक्टर के नेटवर्क टैब में देखता हूं, तो AJAX कॉल "रद्द" की स्थिति के साथ सूचीबद्ध होता है। मैं सर्वर लॉग के साथ पुष्टि कर सकता हूं, कि अनुरोध सर्वर को कभी भी हिट नहीं करता है। ऐसा लगता है कि सर्वर से कनेक्ट करने की कोशिश किए बिना AJAX अनुरोध तुरंत रद्द कर दिया गया था। मुझे इसे पुन: पेश करने का कोई विश्वसनीय तरीका नहीं मिला है, यह यादृच्छिक प्रतीत होता है। मैं इसे 20 बार करता हूं और यह एक बार होता है।

क्या किसी को पता है कि AJAX कॉल को रद्द करने या 0 का स्टेटस कोड वापस करने का क्या कारण होगा?

+0

प्रोटोटाइप का आप किस संस्करण का उपयोग कर रहे हैं? – jonycheung

उत्तर

1

कारण हो सकता है कि आप जिस सर्वर सर्वर और ब्राउज़र का उपयोग कर रहे हों उसका संयोजन हो। यह प्रोटोटाइपजेएस लाइब्रेरी की त्रुटि की तरह प्रतीत नहीं होता है।

एकाधिक स्रोत बताते हैं कि HTTP कनेक्शन का रख-रखाव पैरामीटर सफारी में टूटा हुआ प्रतीत होता है (here, here या here देखें)। अपाचे पर, वे विन्यास को यह जोड़ने की सलाह देते:

BrowserMatch "Safari" nokeepalive 

(अपने सर्वर दस्तावेज में उचित सिंटैक्स की जाँच करें)।

अगर सफारी आपके सर्वर के साथ बुरी तरह से HTTP सतत कनेक्शन संभालती है, तो यह समझा सकता है कि आप क्या अनुभव करते हैं।

यदि यह आपके लिए बहुत जटिल नहीं है, तो मैं एक और HTTP सर्वर आज़माउंगा, हर ओएस पर बहुत सारे उपलब्ध हैं।

हालांकि, आपके उत्तर को पूरी तरह उत्तर देने के लिए हमें कुछ जानकारी नहीं है। सर्वर मुद्दा एक लीड है लेकिन अन्य हो सकते हैं। यह जानना अच्छा होगा कि यह अन्य ब्राउज़रों में एक ही चीज़ है (फ़ायरबग के साथ फ़ायरफ़ॉक्स इस तरह की जानकारी प्रदर्शित करेगा, क्रोम, ओपेरा और आईई में विकास बिल्टिन टूलबॉक्स हैं)। एक और वैध सवाल यह होगा कि आप प्रति सेकंड इस AJAX अनुरोध को कितनी बार निष्पादित करते हैं (यदि प्रासंगिक हो)।

0

मुझे पता है कि यह एक पुराना विषय है, लेकिन मैं सफारी के लिए एक समाधान साझा करना चाहता था जो दूसरों को कुछ समय बचा सकता है।

BrowserMatch "^(?=.*Safari)(?=.*Macintosh)(?!.*Chrom).*" nokeepalive gzip-only-text/html 

regex सुनिश्चित करें कि केवल सफारी मैक पर पता चला है बनाता है, और नहीं मोबाइल सफारी और क्रोम (IUM) और इस तरह: निम्न पंक्ति वास्तव में सभी समस्याओं को हल। विंडोज के लिए सफारी भी मेल नहीं खाती है, लेकिन रखरखाव की समस्या केवल मैक-सफारी संयोजन ही प्रतीत होती है। इसके अलावा, कुछ सफारी संस्करण gzipped सीएसएस/जेएस अच्छी तरह से संभाल नहीं है।

सफारी के विभिन्न संस्करणों में हमारी साइट क्रैशिंग या सीएसएस पूरी तरह से लोड नहीं होने के हमारे सभी लक्षण जो मुझे लगभग अपने बालों को खींचने के लिए प्रेरित करते हैं (सफारी वास्तव में नया आईई है) इस अपाचे 'कॉन्फ़िगरेशन हैक' के साथ हमारे लिए हल किया गया है। ।

संबंधित मुद्दे