2010-08-09 24 views
0

我有一个aspx页面,我使用XDomainRequest对象来填充两个使用AJAX响应返回的html的div。
我已经使用jQuery来检索到的名单得到的div并执行“每一个()”XDomainRequest对象缓存/异步调用问题

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上“$。就绪(函数(){})”,这两个请求被异步发送到服务器和处理

结果是
1.有时在onload获得在两个DIV结果第二个div的响应。
2. IE只向服务器发送一个请求(我使用fiddler来查看发送给服务器的请求)。

任何人都可以指导我什么是错的代码?据我所知XDR不支持同步调用,异步调用给我错误的结果。针对此问题的任何解决方法/提示。通过自己解决,当我指出了我的代码:(错误

回答

3

问题

xdr = new XDomainRequest(); 

应该

var xdr = new XDomainRequest(); 

对于第2点,我加“的Cache-Control:NO-缓存“标题在我的回应,它解决了这个问题。