2010-09-29 4 views
5

मुझे XMLHttpRequest प्रगतिशील डेटा डाउनलोड करने में समस्याएं आ रही हैं। मुझे राज्य 2 और राज्य से 3 मिलता है। राज्य 3 के बाद इसे कभी भी बुलाया नहीं जाता है। मैं क्या गलत कर रहा हूं? मैंने कहीं पढ़ा है मुझे डेटा फ्लश करने की ज़रूरत है लेकिन मैं यह कैसे कर सकता हूं?XMLHttpRequest प्रगतिशील डेटा को काम नहीं कर रहा है?

var xmlHttp = new XMLHttpRequest(); 
// try to connect to the server 
try 
{ 
    // initiate server request 
    xmlHttp.open("GET", "http://208.43.121.133:8164/;", true); 
    xmlHttp.setRequestHeader("Icy-Metadata", "1"); 
    xmlHttp.onreadystatechange = function() 
    { 
    alert("status: "+xmlHttp.status); 
    alert("State: "+xmlHttp.readyState); 

    if (xmlHttp.readyState == 3) 
    { 
     alert(xmlHttp.responseText); 
    } 
    }; 
    xmlHttp.send(null); 
} 
// display an error in case of failure 
catch (e) 
{ 
    alert("Can't connect to server:\n" + e.toString()); 
} 

मैं xmlHttp.responseText पढ़ने के लिए जब readyState 3 है अनुमति:

यहाँ मेरी कोड है?

उत्तर

-4

Kranu सही है, तो आप responseText पढ़ने के लिए जब readyState 3. देखें http://www.davidflanagan.com/2005/08/xmlhttprequestreadystate-3.html

समाधान एक पर एक संदेश भेजने के लिए है की अनुमति नहीं है पहर। जब आप एक संदेश प्राप्त करते हैं, तो बस एक और एक्सएचआर बनाएं। इस प्रकार गूगल करता है (किया?) सर्वर पुश करता है।

+0

लिंक के लिए धन्यवाद! अधिक सटीक जानकारी ... तो मैं अटक गया हूं :(ऊपर दिए गए मेरे नमूना कोड से दिया गया यूआरएल लिंक एक रेडियो स्टेशन से है और निरंतर डेटा पैकेट प्लस मेटाडाटा है ... यही वह है जो मैं बाद में हूं, मेटाडाटा ... मैं इस डेटा को पार्स करना चाहता हूं ... जावास्क्रिप्ट की तुलना में प्रगतिशील डाउनलोड प्रदान नहीं करता है। :( – Jona

+0

क्या एक ही होस्ट के भीतर रेडियो स्टेशन है? मुझे लगता है कि आप इसे एक्सएचआर बना रहे हैं। विकल्प लोड करना है एक आईफ्रेम में यूआरएल और अंतराल पर iframe की सामग्री की जांच करें। आखिरकार, आप सर्वर पर एक स्क्रिप्ट लिख सकते हैं रेडियन स्टेशन पर नियमित सॉकेट का उपयोग करता है और आपके क्लाइंट को जेसन संदेश आउटपुट करता है। –

+0

आप सीधे जावास्क्रिप्ट से नहीं कर पाए किसी भी मामले में यह बाइनरी डेटा है जो बेस 64 एन्कोडेड नहीं है। –

0

समस्या इस क्षेत्र के साथ सबसे अधिक संभावना है:

if(xmlHttp.readyState == 3) { 
     alert(xmlHttp.responseText); 
    } 

कारण किया जा रहा है कि xmlRequest अभी तक पूरा नहीं किया गया है (readyState = 4 जब पूरा)। जब आपने प्रतिक्रिया समय से पहले अनुरोध किया था, तो उसने एक त्रुटि ट्रिगर की और कोड को समाप्त करने से रोक दिया।

तो तुम यह करने के लिए बदल जाएगा:

if(xmlHttp.readyState == 4) { 
    alert(xmlHttp.responseText); 
} 
+0

अच्छी बात यह है कि, मुझे डेटा की आवश्यकता होती है, जैसा कि इसमें आता है। मैं तब तक इंतजार नहीं कर सकता जब तक यह कभी नहीं किया जाएगा, यह एक सतत डेटा स्ट्रीम है। – Jona

+0

वैसे यह नहीं है कि आप निरंतर डेटा स्ट्रीम कैसे कार्यान्वित करेंगे। आप क्या करेंगे, एक भाग लोड करें, जब यह हो जाए, तो स्ट्रीम के अगले भाग का अनुरोध करें। xmlHttp निरंतर डेटा स्ट्रीम के लिए नहीं है। – Kranu