我有一个aspx页面,我正在使用XDomainRequest对象来填充从AJAX响应返回的html的两个div。
我使用Jquery获取div并在检索到的List
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 .');
}
}
现在,发生的事情是,我在页面上有两个具有不同ID的Div,当此代码在“$ .ready(function(){})”上运行时,两个请求都异步发送到服务器并进行处理< / p>
结果是
1.有时onload会得到div结果中第二个div的响应
IE只向服务器发出一个请求(我正在使用fiddler来查看向服务器发送的请求)。
任何人都可以指导我错误的代码吗?据我所知,XDR不支持同步调用,异步调用给我错误的结果。针对此问题的任何解决方法/提示。
答案 0 :(得分:3)
当我在我的代码中指出错误时,我自己解决了问题:(。
xdr = new XDomainRequest();
应该是
var xdr = new XDomainRequest();
对于第2点,我在我的回复中添加了“Cache-Control:no-cache”标题,它解决了这个问题。