jquery ajax विधि को कॉल करते समय, हमें कभी-कभी किसी मान को वापस करने या वैश्विक चर के लिए मान निर्दिष्ट करने के लिए विधि की आवश्यकता होती है, लेकिन हम पाते हैं कि प्रोग्राम निष्पादित होने के बाद हम जो मान चाहते हैं वह प्राप्त नहीं होता है, उदाहरण के लिए:
var i=0;//定义一个全局全量 $.get(url,function(data){ i=9; })//然后调用jquery的一个函数 alert(i);//得到的是0而不是9
डेटा में डेटा अतुल्यकालिक रूप से प्राप्त किया जाता है। पृष्ठ लोड होने पर वैश्विक वातावरण में कोड निष्पादित होता है। इस समय, अतुल्यकालिक डेटा अधिग्रहण पूरा नहीं हुआ है और मूल्य प्राप्त नहीं किया जा सकता है।
समाधान:
var i=0; $.ajax({ url:url, success:function(){ i=9; }, async:false }); alert(i);
या इसे सीधे $.get() से पहले जोड़ें
$.ajaxSettings.async = false;
डिफ़ॉल्ट कॉन्फ़िगरेशन को संशोधित करें.
इस मामले में, async का डिफ़ॉल्ट सेटिंग मान सत्य है, यह एक अतुल्यकालिक विधि है। कहने का तात्पर्य यह है कि, जब AJAX सर्वर के लौटने की प्रतीक्षा करता है, तो फ्रंट डेस्क AJAX के बाद स्क्रिप्ट निष्पादित करना जारी रखेगा। जब तक सर्वर सही परिणाम नहीं देता तब तक ब्लॉक करें। सफलता तभी निष्पादित होगी जब सफलता निष्पादित होगी, जिसका अर्थ है कि इस समय दो थ्रेड निष्पादित होते हैं, एक थ्रेड अजाक्स ब्लॉक के बाद अनुरोध भेजता है और अजाक्स ब्लॉक के पीछे स्क्रिप्ट भेजता है।
बेशक, अगर इसे async:false पर सेट किया जाता है, तो AJAX एसिंक्रोनी के फायदे खो जाएंगे, और स्थिति के आधार पर इसे अलग तरीके से व्यवहार करने की आवश्यकता है।
HTTPS://blog.CSDN.net/JA tion_/article/details/49357307
HTTPS://wuwuwu.cn blog上.com/发-photo/fear/4424633.HTML
HTTPS://wuwuwu.basic51.net/article/45432.htm