2010-11-12 11 views
7

मेरे jQuery के नीचे है:मैं jQuery का उपयोग कर एक ajax अनुरोध रोक सकता है नहीं और गर्भपात() फ़ंक्शन

var x = $.ajax({ 
    dataType: "jsonp", 
    url: "https://ajax.googleapis.com/ajax/services/search/images?q=google&v=1.0", 
    success: function(msg){ 
     alert("Jsonp data: " + msg); 
    } 
}); 

alert(x); // x is undefined 
// x.abort()​​ 

आप यहाँ इस कोड की कोशिश कर सकते हैं: http://jsbin.com/iyile3/2/edit

मैं इस ajax बंद करना चाहते इस AJAX अनुरोध के सफलता समारोह का अनुरोध करें और रोकें।

लेकिन क्या मैं कि "x" अपरिभाषित है, मुझे लगता है कि मैं इस ajax अनुरोध और इसकी सफलता समारोह नहीं रूकती है।

तो किसी को भी मेरी मदद कर सकते?

बहुत बहुत धन्यवाद!

उत्तर

9

खैर कि समझ में आता है।

jsonp कॉल सामान्य XMLHttpRequest (जो .ajax() सामान्य रूप से लौटाता है) नहीं है। यह उस तरह से काम नहीं करेगा क्योंकि आप same origin policy को तोड़ नहीं सकते हैं।

JSON-पैडिंग गतिशील स्क्रिप्ट टैग प्रविष्टि के साथ काम करता है। तो मूल रूप से, jQuery सिर्फ आपकी साइट पर <script> टैग बनाता है और उस पर डेटा लोड करता है। कोई XHR ऑब्जेक्ट बिल्कुल नहीं।

मुझे नहीं लगता कि वहाँ एक रास्ता जल्दी अनुरोध उस तरह निरस्त करने के लिए है, लेकिन मुझे आशा है कि किसी ने मुझे यहाँ सही कर देंगे अगर मैं गलत हूँ।

+0

आपको बहुत धन्यवाद जे एंडी! – rqqfccsa

+0

हां। Abort() फ़ंक्शन का उपयोग करके जेसनपी अनुरोध को मारने का कोई तरीका नहीं है। लेकिन मुझे लगता है कि मैंने जावास्क्रिप्ट serTimeout() फ़ंक्शन का उपयोग करके इस समस्या को ठीक कर दिया है। शायद कोई भी ClearTimeout() फ़ंक्शन का उपयोग करेगा। अच्छी बात है। लेकिन इस मामले में, मैं समस्या को हल करने के लिए केवल सेटटाइमआउट फ़ंक्शन का उपयोग करता हूं। – rqqfccsa

4

मुझे लगता है कि documentation इस पर एक छोटे से गुमराह किया जा सकता। JSONP का उपयोग करते समय कोई AJAX अनुरोध नहीं किया जाता है। इस मामले में, ajax फ़ंक्शन XMLHTTPRequest की ऑब्जेक्ट के बजाय undefined मान देता है।

+0

आपको बहुत धन्यवाद अनुराग! – rqqfccsa

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