عند استدعاء طريقة 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. كتلة حتى يقوم الخادم بإرجاع النتيجة الصحيحة. لن يتم تنفيذ النجاح إلا عند تنفيذ النجاح، مما يعني أنه سيتم تنفيذ خيطين في هذا الوقت، يرسل مؤشر ترابط واحد بعد كتلة ajax الطلب والبرنامج النصي خلف كتلة ajax.

بالطبع، إذا تم ضبطه على غير متزامن: خطأ، فسيتم فقدان مزايا عدم تزامن أياكس، ويجب التعامل معه بشكل مختلف اعتمادًا على الموقف.


HTTPS://blog.CSDN.net/JA tion_/article/details/49357307

HTTPS://wuwuwu.cn مدونة上.com/发-photo/fear/4424633.HTML

HTTPS://wuwuwu.basic51.net/article/45432.htm

اترك رد