2010-06-09 17 views
25

.load()jQuery लाइब्रेरी का कार्य आपको चुनिंदा रूप से किसी अन्य पृष्ठ (कुछ नियमों के अधीन) से तत्व लोड करने की अनुमति देता है। मैं जानना चाहता हूं कि लोड प्रक्रिया को निरस्त करना संभव है या नहीं।jQuery को छोड़ना() लोड()

हमारे आवेदन में, उपयोगकर्ता आइटम की एक सूची ब्राउज़ कर सकते हैं। वे किसी ऐसे दस्तावेज़ पर क्लिक करना चुन सकते हैं जो किसी अन्य दस्तावेज़ से किसी आइटम के बारे में अतिरिक्त जानकारी लोड करता है और प्रदर्शित करता है (जिसमें कुछ समय लग सकता है)। यदि वे सूची में एक अलग आइटम चुनते हैं, जबकि .load() अभी भी हो रहा है, तो मैं लोडिंग को निरस्त करना चाहता हूं।

क्या यह संभव है? क्या यह इसके लायक भी है? कोई विचार?

दान

उत्तर

34

आप सीधे के बाद से यह चेनिंग के लिए jQuery ऑब्जेक्ट .load() साथ ऐसा नहीं कर सकते, लेकिन यदि आप .html() आप कर सकते हैं, इस तरह के साथ पूर्ण $.ajax() कॉल करने के लिए बदलने के लिए:

var xhr = $.ajax({ 
      url: 'mypage.htm', 
      success: function(data) { 
       $("#myElement").html(data); 
      } 
      }); 
//if needed, abort the request later.. 
xhr.abort(); 

यह लोड को निरस्त करने के लिए .abort() method on the XMLHttpRequest object का उपयोग करता है।

+0

बिल्कुल सही जवाब; धन्यवाद। –

+0

+1 धन्यवाद अच्छा जवाब – gray

1

आप jQuery.ajax मैन्युअल का उपयोग करके ऐसा कर सकते हैं। यह XMLHttpRequest ऑब्जेक्ट लौटाएगा, जिसे आप आवश्यकतानुसार abort पर कॉल कर सकते हैं। सफलता हैंडलर में, आप उपयोग कर सकते हैं jQuery.html

8

निक का जवाब लगभग आवश्यक था, लेकिन काफी नहीं। मैं एक पृष्ठ से केवल एक छवि लोड करने के लिए .load() का उपयोग कर रहा था। तो, निक के जवाब पर

तो बजाय ...

$('#myElement').load('mypage.htm #myImage'); 

मैं अब उपयोग कर रहा हूँ ...

var xhr = $.ajax({ 
      url: 'mypage.htm', 
      success: function(data) { 
       $("#myElement").html($(data).find("#myImage")); 
      } 
      }); 
//if needed, abort the request later.. 
xhr.abort(); 
+0

यह मेरे लिए काम नहीं करता है ... मुझे लगता है कि समस्या है। ढूँढें ... क्या कोई अन्य विकल्प है जो मैं विशिष्ट div को पकड़ने के लिए अन्वेषण कर सकता हूं ... बिना लोड किए .load – justcode

+0

'$ आपके लिए .ajax 'वापसी डेटा? – Homer

+0

हाँ यह करता है अगर मैं बस $ ("# myElement") करता हूं। Html (डेटा) ... लेकिन जब मैं .find जोड़ता हूं ... कुछ भी वापस नहीं आता है और मुझे यकीन है कि कॉल सफल हुआ था। – justcode

1
$("#myElement").load("/mypage #mayImage", function(response, status, xhr) { 
    if (status == "error") { 
    xhr.abort(); 
    } 
}); 

इस तरह काम करना चाहिए का विस्तार ...।

या किसी अन्य घटना पर, मैं एक लंबे क्षेत्र पर सत्यापन भेजता हूं, उपयोगकर्ता परिवर्तन सामग्री, मैं पिछली चेक को फिर से जांचने के लिए रोकना चाहता हूं:

xhr.abort(); 

$("#myElement").load("/mypage #mayImage", function(response, status, xhr) { 
    if (status == "error") { 
    xhr.abort(); 
    } 
}); 
संबंधित मुद्दे