Кэширование объекта XDomainRequest / проблема асинхронного вызова - PullRequest
0 голосов
/ 09 августа 2010

У меня есть страница aspx, на которой я использую объект XDomainRequest для заполнения двух div (ов) html, возвращенным из ответа AJAX.
Я использовал Jquery, чтобы получить div и выполнить «each ()» для извлеченногоСписок

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 .');
    }
}

Теперь, что происходит, у меня есть два Div на странице с разными идентификаторами, и когда этот код работает на "$ .ready (function () {})", оба запроса асинхронноотправлено на сервер и обработано

результат равен
1. иногда при загрузке получают ответ для второго div в обоих результатах div.
2. IE отправляет только один запрос на сервер (IЯ использую Fiddler, чтобы увидеть, какие запросы отправляются на сервер).

Кто-нибудь может подсказать мне, что не так с кодом?Насколько я знаю, XDR не поддерживает синхронные вызовы, а асинхронные вызовы дают мне неверные результаты.Любой обходной путь / совет для этой проблемы.

1 Ответ

3 голосов
/ 11 августа 2010

Проблема решена мной, когда я указал на ошибку в своем коде :(.

xdr = new XDomainRequest(); 

должно быть

var xdr = new XDomainRequest(); 

Для пункта 2 я добавил "Кэш-Control: no-cache " заголовок в моем ответе, и это решило вопрос.

...