मैं Google क्रोम, सफारी और फ़ायरफ़ॉक्स में XMLHttpRequest का उपयोग कर एक JSON फ़ाइल लोड कर रहा हूं। सभी तीन ब्राउज़रों में मुझे ProgressEvent
एस प्राप्त हो रहा है जो .loaded
संपत्ति को सही ढंग से दिखाता है। हालांकि .lengthComputable
संपत्ति गलत है और .total
संपत्ति शून्य है। मैंने जांच की है कि Content-Length
HTTP शीर्षलेख भेजा जा रहा है और यह सही है - यह है। प्रतिक्रिया gzip-encoded जा रही है, लेकिन Content-length
सही ढंग से एन्कोडेड लंबाई (डिकंप्रेशन से पहले) दिखाता है।ProgressEvent.lengthComputable झूठी क्यों है?
मेरी लंबाई ProgressEvent
एस में क्यों उपलब्ध नहीं होगी?
HTTP/1.1 200 OK
ETag: "hKXdZA"
Date: Wed, 20 Jun 2012 20:17:17 GMT
Expires: Wed, 20 Jun 2012 20:17:17 GMT
Cache-Control: private, max-age=3600
X-AppEngine-Estimated-CPM-US-Dollars: $0.000108
X-AppEngine-Resource-Usage: ms=2 cpu_ms=0 api_cpu_ms=0
Content-Type: application/json
Content-Encoding: gzip
Server: Google Frontend
Content-Length: 621606
नोट::
यहाँ हेडर हैं फ़ाइल Google अनुप्रयोग इंजन के माध्यम से प्रस्तुत किया जा रहा है।
यहाँ जावास्क्रिप्ट है:
var req;
if (window.XMLHttpRequest){
req = new XMLHttpRequest();
if(req.overrideMimeType){
req.overrideMimeType("text/json");
}
}else{
req = new ActiveXObject('Microsoft.XMLHTTP');
}
// Listen for progress events
req.addEventListener("progress", function (event) {
console.log(event, event.lengthComputable, event.total);
if (event.lengthComputable) {
self.progress = event.loaded/event.total;
} else if (this.explicitTotal) {
self.progress = Math.min(1, event.loaded/self.explicitTotal);
} else {
self.progress = 0;
}
self.dispatchEvent(Breel.Asset.ON_PROGRESS);
}, false);
req.open('GET', this.url);
नोट: console.log
कि कोड में तारीख करने के लिए .loaded
रों के साथ घटनाओं के सैकड़ों दिखाया जा रहा है लेकिन .lengthComputable
हमेशा गलत है और .total
हमेशा शून्य है। self
इस XMLHttpRequest
के लिए ज़िम्मेदार वस्तु को संदर्भित करता है।
क्या हम आपके पास जावास्क्रिप्ट कोड देख सकते हैं जो इस डेटा को देख रहा है? – tkone
मैंने अभी जोड़ा है। –
क्या आपने इसे गैर-Google ऐप इंजन सर्वर पर उपयोग करने का प्रयास किया है? यदि 'लंबाई कॉम्प्यूटेबल' xhr ऑब्जेक्ट से गलत है तो यह नहीं पता कि फ़ाइल कितनी देर तक है। हम यहां जीएई का उपयोग करते हैं और इसकी अधिकांश कार्यक्षमताओं के साथ बड़ी समस्याएं हैं - यह आश्चर्यजनक नहीं होगा। – tkone