J'ai une page aspx sur laquelle j'utilise l'objet XDomainRequest pour remplir deux div (s) avec html renvoyé par la réponse AJAX.
Je l'ai utilisé Jquery pour obtenir les divs et effectuer « each() » sur la liste récupéréeMise en cache d'objet XDomainRequest/problème d'appel asynchrone
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 .');
}
}
Maintenant, ce qui se produit est, j'ai deux Divs sur une page qui ont des ID différents et lorsque ce code fonctionne sur « .ready $ (function() {}) », les deux demandes sont envoyées de manière asynchrone au serveur et traitées
le résultat est
1. parfois onload obtenir la réponse pour la deuxième div dans les deux div résultats.
2. IE envoie une seule requête au serveur (j'utilise fiddler pour voir quelles requêtes sont envoyées au serveur). Est-ce que quelqu'un peut me guider ce qui est faux avec le code?
Autant que je sache XDR ne supporte pas les appels synchrones, et les appels asynchrones me donnent des résultats erronés. Toute solution de contournement/conseil pour ce problème. .