2010-02-14 13 views
6

मैं वर्तमान में उन ब्राउज़रों के लिए लंबे मतदान का उपयोग करके HTTP पुश का एक प्रकार कार्यान्वित कर रहा हूं जो मल्टीपार्ट AJAX प्रतिक्रियाओं का समर्थन नहीं करते हैं।अजाक्स अनुरोध पर "व्यस्त" राज्य में प्रवेश करने वाले ब्रोर्स

मैं इस प्रकार LongPolling IE 6 पर पूरी तरह से काम करता है स्वीकार करने के लिए है कि जब सर्वर साइड ठीक काम कर रहा है, मैं अपेक्षाकृत जावास्क्रिप्ट विकास, और इस तरह कुछ स्पष्ट गलतियों

समस्या है बना दिया है हो सकता है सामने के छोर को नया हूँ है , 7,8 और फ़ायरफ़ॉक्स (भले ही फ़ायरफ़ॉक्स मल्टीपार्ट का उपयोग करता है, मैंने इसे लंबे मतदान के साथ भी परीक्षण किया) लेकिन सफारी और क्रोम AJAX अनुरोधों के दौरान ब्राउज़र "व्यस्त" स्थिति दर्ज करते हैं। (वे दिखाने खिड़कियों कर्सर प्रतीक्षा करें, और सफारी भी शीर्षक पट्टी में अपने "लोड करने" सूचक दिखाता है)

इस कोर्स वांछनीय नहीं की है ..

यहाँ Jquery के आधार पर लंबे समय से चुनाव करने के लिए मेरे कोड है 1.4.1:


function MepSubscribeToQueueLongPoll(name, callback) { 

    var queueUrl = MepGetQueueUrl(name, "LongPoll"); 
    MepLongPollStep(queueUrl, callback); 
}; 

function MepLongPollStep(url, callback) { 
    $.ajax({ 
     url: url, 
     async: true, 
     cache: false, 
     success: function (data,status,request) { 
      callback(request.responseText); 
      MepLongPollStep(url, callback); 
     } 
    }); 
}; 

ध्यान दें कि मैं डेटा कॉलबैक करने के लिए सीधे request.responseText पास करके jQuery का कार्यक्षमता को पार्स को दरकिनार कर रहा हूँ क्योंकि Jquery बहुखण्डीय ajax respones समर्थन करने के लिए प्रतीत नहीं होता और मैं संचार पर एक जैसी बनना चाहता था पथ।

उत्तर

3

चूंकि कोई बेहतर उत्तर आगे बढ़ गया है, मुझे आश्चर्य है कि एक साधारण टाइमआउट समस्या का समाधान करेगा या नहीं। "मुझे यह सच जवाब होने के बारे में पता है" के बजाय "अनुमान" देने के लिए खेद है, लेकिन यह वास्तव में इसे ठीक कर सकता है .:

function MepLongPollStep(url, callback) { 
    $.ajax({ 
     url: url, 
     async: true, 
     cache: false, 
     success: function (data,status,request) { 
      callback(request.responseText); 
      window.setTimeout(function(){ 
       MepLongPollStep(url, callback); 
      },10); 
     } 
    }); 
}; 
+0

धन्यवाद, मुझे ब्राउजर व्यवहार के बारे में बहुत कुछ पता है, लेकिन आपकी टिप निश्चित है सभी ब्राउज़रों में समस्या – Gluber

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