【问题标题】:XDomainRequest object caching/asynchronous call issueXDomainRequest 对象缓存/异步调用问题
【发布时间】:2012-03-14 02:33:07
【问题描述】:

我有一个 aspx 页面,我在该页面上使用 XDomainRequest 对象使用从 AJAX 响应返回的 html 填充两个 div。
我使用 Jquery 来获取 div 并在检索到的 List 上执行“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 .');
    }
}

现在,发生的事情是,我在一个页面上有两个具有不同 ID 的 Div,当此代码在 "$.ready(function(){})" 上运行时,两个请求都异步发送到服务器并处理

结果是
1. 有时 onload 在两个 div 结果中都会得到第二个 div 的响应。
2. IE 只向服务器发送一个请求(我正在使用 fiddler 来查看向服务器发送了哪些请求)。

谁能指导我代码有什么问题?据我所知,XDR 不支持同步调用,异步调用给了我错误的结果。此问题的任何解决方法/提示。

【问题讨论】:

    标签: caching cross-domain xdomainrequest xdr


    【解决方案1】:

    当我指出我的代码中的错误时,我自己解决了问题:(。

    xdr = new XDomainRequest(); 
    

    应该是

    var xdr = new XDomainRequest(); 
    

    对于第 2 点,我在回复中添加了 "Cache-Control:no-cache" 标头,它解决了问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-11
      • 2011-03-16
      • 1970-01-01
      • 2021-01-24
      • 2012-07-27
      • 2016-04-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多