سؤال

لدي صفحة ASPX التي أستخدم عليها كائن XdomainRequest لإلغاء اثنين من Div (s) مع HTML التي تم إرجاعها من استجابة Ajax.
لقد استخدمت jQuery للحصول على divs وأداء "كل ()" في القائمة التي تم استردادها

var divs = $("div");
divs.each(function(index) {
    if (window.XDomainRequest) {
        xdr = new XDomainRequest();
        if (xdr) {
            xdr.onload = function() {
                alert("XDR Response - " + xdr.responseText);
                var currentDivID = divs[index].attributes["id"].value;
                var selectedDiv = $("div[id='" + currentDivID + "']");
                if (xdr.responseText == '') selectedDiv.attr("style", "display:none;");
                else selectedDiv.append(xdr.responseText);
            };
            xdr.open("GET", xdrUrl);
            try {
                xdr.send();
            } catch (e) {
                alert(e);
            }
        } else {
            alert('Create XDR failed.');
        }
    } else {
        alert('XDR not found on window object .');
    }
}

الآن ، ما يحدث ، لديّ اثنين من divs على صفحة لها معرفات مختلفة وعندما يتم تشغيل هذا الرمز على "$ .Ready (function () {})" ، يتم إرسال كلا الطلبات بشكل غير متزامن إلى الخادم ومعالجتها

النتيجه هي
1. في بعض الأحيان ، يحصل Onload على استجابة Div الثانية في كل من نتائج DIV.
2. أي طلب واحد فقط إلى الخادم (أنا أستخدم Fiddler لمعرفة الطلبات التي يتم إرسالها إلى الخادم).

هل يمكن لأي شخص أن يرشدني ما الخطأ في الكود؟ بقدر ما أعرف ، لا يدعم XDR المكالمات المتزامنة ، والمكالمات غير المتزامنة تعطيني نتائج خاطئة. أي حلول/نصيحة لهذه المشكلة.

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

المحلول

تم حل المشكلة بنفسي عندما أشرت إلى خطأ في الكود الخاص بي :(.

xdr = new XDomainRequest(); 

يجب ان يكون

var xdr = new XDomainRequest(); 

للنقطة 2 ، أضفت "السيطرة على ذاكرة التخزين المؤقت: عدم ذاكرة التخزين المؤقت" رأس في ردي وحل الأمر.

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