2010-09-24 9 views
7

मैं ऐसी वेबसाइट बनाना चाहता हूं जो XMLHttpRequest() के माध्यम से एक छवि लोड करे। (XMLHttpRequest क्योंकि मैं उपयोगकर्ता एक% प्रगति का प्रतिनिधित्व करना चाहते हैं)XMLHttpRequest जेएस छवि लोडिंग

मेरे कोड:

var req = new XMLHttpRequest(); 

req.addEventListener("progress", onUpdateProgress, false); 
req.addEventListener("load", onTransferComplete, false); 
req.addEventListener("error", onTransferFailed, false); 
req.addEventListener("abort", onTransferFailed, false); 

req.open("GET", "image.png", true); 
req.send(); 

function onUpdateProgress(e) { 
if (e.lengthComputable) { 
var percent_complete = e.loaded/e.total; 
if (Math.round(percent_complete*200)>=20) { 
        $("#progress").animate({ 
        width: Math.round(percent_complete*100) 
      }, 0); 
     } 
     } 
} 

function onTransferFailed(e) { 
    alert("Something went wrong. Please try again."); 
} 

function onTransferComplete(e) { 
    //Problem 
} 

मेरे समस्या मैं नहीं है पता छवि जो अब लोड किया जाता है को दिखाने के लिए कैसे है। मुझे उम्मीद है कि कोई मेरी मदद कर सकता है :) धन्यवाद ...

+0

+1 अच्छा सवाल! मुझे बाइनरी छवि मिल रही है और यह नहीं पता कि छवि – Topera

उत्तर

2

आप डेटा यूआरआई का उपयोग करके ऐसा कर सकते हैं, लेकिन यह सभी मौजूदा ब्राउज़रों में यह काम करना मुश्किल है।

यदि कैशिंग विकल्प सही तरीके से सेट किए गए हैं, तो आप इसे दो बार बेहतर लोड कर सकते हैं: पहले अपने AJAX अनुरोध का उपयोग करके, फिर, छवि द्वारा ब्राउज़र द्वारा कैश किए जाने के बाद, सामान्य छवि कार्यों का उपयोग करने के बाद। दूसरी बार आपकी छवि को फिर से सर्वर से पुनर्प्राप्त नहीं किया जाएगा, लेकिन ब्राउज़र कैश्ड फ़ाइल का उपयोग करेगा और छवि को लगभग तुरंत दिखाएगा।

+0

कैसे दिखाती है यह काम करता है। लेकिन यह देखना मुश्किल है कि ब्राउज़र वास्तव में केवल एक बार तस्वीर को ज़ोर देता है या नहीं। उदाहरण के लिए सफारी वेब इंस्पेक्टर इसे दो बार दिखाता है: electerious.com/share/Web%20Inspector.png – tobi

+0

@tobias - क्या आपकी सर्वर सेटिंग्स सही हैं? क्या आप हेडर दिखा सकते हैं जिसके साथ तस्वीर भेजी जाती है? –

+0

मुझे ऐसा लगता है। यहां परीक्षण साइट है: electerious.com/share/loading.html – tobi