سؤال

أقوم بعمل AJAX مع JQuery ولكن في كل مرة يجب تنفيذ حدث "Onsuccess" بعد فصل AJAX آخر غير متصل.

هنا هو الرمز:

    d.ajax({
        url: f.options.url.offline,
        dataType: "jsonp",
        jsonp: "callback",
        cache: false,
        data: {
            status: "offline",
            ticket: f.connection.options.ticket
        },
        success: function(g) {
            f._offlineSuccess()
        },
        error: function() {
            f._offlineError()
        }
    })

كل طلبات AJAX الخاصة بي هي JSONP، وعندما يتم تشغيل التعليمات البرمجية أعلاه، هناك اتصال AJAX آخر (طلب اقتراع طويل، يستمر حوالي 10 سينكوندز) بالفعل في الوقت نفسه. لذلك يتم تنفيذ وظيفة "f._offlinesccess" دائما بعد اتصال AJAX آخر غير متصل.

لا أستطيع أن أرى أي علاقة بين طلبتين أياكس، ولا أعرف لماذا يجب تنفيذ وظيفة "Onsuccess" بعد توقف اتصال Ajax آخر.

أي مساعدة موضع تقدير ~

================================

محدث:

لقد اكتشفت للتو ما إذا كان لدي اتصالين JSONP في نفس الوقت، سيتم حظر وظيفة "Onsuccess / OnFailure". لا أعرف إذا واجه البعض المشكلة نفس المشكلة من قبل؟

هل كانت مفيدة؟

المحلول

طلبات AJAX غير متزامنة. لذلك طلب جديد لا يجري للمرة السابقة. إذا كنت تريد أن يستخدم السلوك معلمة ASYNC إلى False، أو استخدم الدالة كاملة () للاتصال بطلب آخر. هذا سوف ينطلق فقط عند الانتهاء من الطلب الأول.

تحديث لاستخدام JSONP jquery.getjson () والقيام بالطلب الثاني على رد الاتصال إذا كانت المكالمة ناجحة.

function (data, textStatus) {
    // data will be a jsonObj
    // textStatus will be one of the following values: 
    //   "timeout","error","notmodified","success","parsererror"
    this; // the options for this ajax request
}

نصائح أخرى

إذا كنت تستخدم Firebug - علامة التبويب NET، فستتمكن من رؤية عنوان URL الكامل لطلبات JSONP. يجب أن تكون قادرا على رؤية أسماء لوظائف رد الاتصال في نهاية عنوان URL. هل هذه مختلفة أو هي نفسها؟ لا أستطيع إلا أن أفترض أنها هي نفسها.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top