2011-12-14 68 views
2

我需要刷新页面的一部分,我使用这个脚本在FF和Chrome中工作, 但这在IE中不起作用。部分页面在IE中刷新

<script language="JavaScript"> 
<!-- 
var page = "ASP/include/ithome.asp"; 
var MyDelay = function() { ajax(page, 'scriptoutput'); }; 
function ajax(url,target) 
{ 
    // native XMLHttpRequest object 
    document.getElementById(target).innerHTML = 'sending...'; 
    if (window.XMLHttpRequest) { 
     req = new XMLHttpRequest(); 
     req.onreadystatechange = function() {ajaxDone(target);}; 
     req.open("GET", url, true); 
     req.send(null); 
    // IE/Windows ActiveX version 
    } else if (window.ActiveXObject) { 
     req = new ActiveXObject("Microsoft.XMLHTTP"); 
     if (req) { 
      req.onreadystatechange = function() {ajaxDone(target);}; 
      req.open("GET", url, true); 
      req.send(); 
     } 
    } 
      setTimeout(MyDelay, 12000); 
} 

function ajaxDone(target) { 
// only if req is "loaded" 
if (req.readyState == 4) { 
// only if "OK" 
if (req.status == 200 || req.status == 304) { 
results = req.responseText; 
document.getElementById(target).innerHTML = results; 
} else { 
document.getElementById(target).innerHTML="ajax error:\n" + 
req.statusText; 
} 
} 
} 

function winOp(link, width, height) { 
    window.open(link, '', 'toolbar="no",scrollbars=no,resizeable="no",height=' + height + ',width=' + width + ''); 
} 

// --> 
</script> 
<body background="images/Pattern.gif" onload="ajax(page,'scriptoutput')"> 
... 

我鑫卡特,这个问题是在setTimeout的,但是当我debuged的页面,它看起来作品。 也许req.open(“GET”,url,true)从缓存打开ASP页面。你可以帮帮我吗?

谢谢

L.

回答

0

你说的没错,当你说:

也许req.open("GET", url, true)从缓存中打开ASP页面

IE将缓存阿贾克斯如果是通过GET请求回应。只要做这样的事情(这将使所有的请求具有唯一的查询字符串,因此缓存将不会是一个问题):

req.open("GET", [url, "&_=", new Date().getTime()].join(""), true); 
+0

谢谢,它的工作原理。如何简单:-) – leoleu 2011-12-14 18:14:11