我正在编写一个应用程序,并试图将简单的AJAX功能绑定在一起。它在Mozilla Firefox中运行良好,但是Internet Explorer中有一个有趣的错误:每个链接只能单击一次。浏览器必须完全重新启动,只是重新加载页面将无法进行。我编写了一个非常简单的示例应用程序来演示这一点。
Javascript转载如下:
var xmlHttp = new XMLHttpRequest(); /* item: the object clicked on type: the type of action to perform (one of 'image','text' or 'blurb' */ function select(item,type) { //Deselect the previously selected 'selected' object if(document.getElementById('selected')!=null) { document.getElementById('selected').id = ''; } //reselect the new selcted object item.id = 'selected'; //get the appropriate page if(type=='image') xmlHttp.open("GET","image.php"); else if (type=='text') xmlHttp.open("GET","textbox.php"); else if(type=='blurb') xmlHttp.open("GET","blurb.php"); xmlHttp.send(null); xmlHttp.onreadystatechange = catchResponse; return false; } function catchResponse() { if(xmlHttp.readyState == 4) { document.getElementById("page").innerHTML=xmlHttp.responseText; } return false; }
任何帮助,将不胜感激。
发生这种情况是因为Internet Explorer忽略了no- cache指令,并缓存了ajax调用的结果。然后,如果下一个请求相同,它将仅提供缓存的版本。有一个简单的解决方法,就是在查询末尾附加随机字符串。
xmlHttp.open("GET","blurb.php?"+Math.random();