2011-05-15 16 views
6

मुझे जावास्क्रिप्ट फ़ंक्शन को कॉल करने की आवश्यकता है जो AJAX कॉल की सामग्री देता है।ब्लॉकयूआई बनाम AJAX के साथ async विकल्प के साथ

इस परिणाम को प्राप्त करने के लिए मैंने एजेक्स कॉल में झूठ के लिए async विकल्प सेट किया है।

 
function ajaxQuery(){ 
    var content; 
    $.ajax({ 
     url: "blabla.html, 
     async: false, 
     success: function(data){ 
      content = data 
     } 
    }); 
    return content; 
} 

दुर्भाग्य से, गलत करने के लिए async विकल्प को ब्लॉक करना ब्लॉकयूआई ठीक से काम नहीं कर रहा है। सर्वर के लिए क्वेरी के दौरान, ब्राउज़र कोई संदेश के साथ जमे हुए है।

यदि मैं ब्लॉकयूआई को सही करने के लिए async विकल्प सेट करता हूं तो ठीक से काम करने के लिए आता है लेकिन मेरा जावास्क्रिप्ट फ़ंक्शन मान को अपरिभाषित करता है, संभवतः क्योंकि AJAX क्वेरी समाप्त नहीं होती है।

AJAX कॉल बनाने वाले ब्लॉकयूआई की सामग्री प्राप्त करने के लिए जावास्क्रिप्ट फ़ंक्शन में इस समस्या को कैसे हल करें?

धन्यवाद,

एंटोनियो

+3

यह प्रश्न हर दिन कम से कम पांच बार पूछा जाता है। – SLaks

उत्तर

7

आप नहीं कर सकते।

सिंक्रोनस AJAX कॉल ब्राउज़र को पूरी तरह से जमा कर देगा और हर कीमत से बचा जाना चाहिए; उसके आसपास कोई रास्ता नहीं है।

इसके बजाय, आपको कॉलबैक का उपयोग करके मान पास करना चाहिए, उसी तरह $.ajax करता है।

1

आपकी समस्या यह है कि आप अंत में सामग्री वापस कर रहे हैं; इसके बजाय, आपके द्वारा पंजीकृत सफलता कॉलबैक में डोम को संशोधित करें (या एक फ़ंक्शन को कॉल करें)। आप शायद एक त्रुटि कॉलबैक पंजीकृत करना चाहते हैं, साथ ही सर्वर कुछ 200 से अधिक लौटाता है।

1

लोड होने का कुछ स्थिति संदेश दिखा रहा है ... प्रतिक्रिया प्राप्त होने तक। इस कोड के साथ

4

समस्या है कि डेटा को कालबैक और इतने कोड

return content; 

के इस हिस्से में भेजा जाता है इससे पहले कि यह एक

success: function(data){ 
     content = data 
    } 

इस अपरिभाषित वापसी का कारण है कुछ समय excecuted हो जाएगा।

तब कैसे करें?

function contentParse(data){ 
    //do things with data received 
} 

$.ajax({ 
    url: "blabla.html", 
    success: function(data){ 
     contentParse(data); 
    } 
}); 

कम से कम इस मैं कैसे करना है। सौभाग्य।

0

एक अन्य ऑपरेशन को पूरा करने तक सभी अन्य नियंत्रण अक्षम करें

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