2012-08-31 10 views
6

अजाक्स कॉलबैक का उपयोग करता है, क्योंकि यह A तुल्यकालिक है।AJAX कॉल पर ब्लॉक कैसे करें (मैं इसे ब्लॉक करना चाहता हूं)

मैं दूरदराज के यूआरएल ब्लॉक करने के लिए अपने कॉल चाहते कुछ जवाब वहाँ है, वास्तव में अजाक्स के रूप में जब तक है, लेकिन अतुल्यकालिक हिस्सा बिना, या मुझे कहना होगा कि मैं एक JAX कॉल करनी है।

वहाँ निम्नलिखित ऐसा करने के लिए किसी भी तकनीक (का उपयोग करता है JQuery) है (... JQuery या कुछ और के साथ समाधान):

function get_data() { 
    $.ajax({ 
     type : "POST", 
     url : "/foo" 
    }).done(function(data, textStatus, jqXHR) { 
     return data; 
    }).fail(function(jqXHR, textStatus) { 
     return null; 
    }); 
} 

var data = get_data(); 
// process `data` 

मैं बस सोच रहा हूँ - सीखना चाहते हैं।

दरअसल ऐसे समय होते हैं जब एक उत्तर ठीक होने तक अवरुद्ध हो जाता है। मैं यह नहीं कह रहा हूं कि मैं ब्राउज़र को ब्लॉक करना चाहता हूं, बस स्क्रिप्ट रनटाइम।

+0

लिखने 'async होने के लिए नहीं करना चाहती: ajax विकल्प – diEcho

+0

jQuery $ .ajax है' async' संपत्ति के साथ FALSE'। यदि आप इसे गलत पर सेट करते हैं तो यह अवरुद्ध होगा। – osoner

+0

संभावित डुप्लिकेट [jquery के साथ सिंक्रोनस कॉल] (http://stackoverflow.com/questions/2942544/synchronous-calls-with-jquery) - हालांकि आप ब्राउज़र को अवरुद्ध किए बिना रनटाइम को अवरुद्ध नहीं कर सकते हैं। और आप कॉलबैक से प्रतिक्रिया वापस नहीं कर सकते हैं, आपको इसे एक चर को असाइन करना होगा और उसे वास्तविक फ़ंक्शन से वापस करना होगा। –

उत्तर

10

jQuery (check the docs) का उपयोग करते समय आप बस async : false बूलियन सेट कर सकते हैं। ध्यान दें: jQuery 1.8 के रूप में, async का उपयोग: jqXHR ($ deferred) के साथ झूठा बहिष्कृत है; आपको पूर्ण/सफलता/त्रुटि कॉलबैक का उपयोग करना होगा।

यदि आप jQuery का उपयोग नहीं करना चाहते हैं या जानना चाहते हैं कि हुड के नीचे क्या चल रहा है, read this

xmlhttp.open("GET","ajax_info.txt",false); 
xmlhttp.send(); 
document.getElementById("myDiv").innerHTML=xmlhttp.responseText; 

Do क्यों आप इसे async हालांकि ...

+1

सबसे पहले, धन्यवाद। दूसरा, jQuery 1.8 के बारे में नोट स्पष्ट नहीं है। साथ ही, दस्तावेज़ निम्न में 'async' के बारे में कहते हैं:' .. क्योंकि यह ब्राउज़र को उत्तरदायी बनने का कारण बन सकता है। मैं ब्राउज़र अवरुद्ध करने से कैसे बचूं? यह स्पष्ट रूप से अस्वीकार्य है। – Poni

+0

एक और विचार में, यह एक और सवाल है। फिर से धन्यवाद। – Poni

+0

@Poni क्या आपने इस अन्य प्रश्न का उत्तर दिया है जिसका आपने उल्लेख किया है? क्या आपने इसके लिए एक स्टैक ओवरफ्लो प्रश्न बनाया है? इससे लिंक करने की परवाह है? – Magne

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