Ajax iframe请求仅在Internet Explorer中运行一次

时间:2013-08-14 22:51:37

标签: javascript ajax internet-explorer

我正在使用ajax脚本在php脚本运行时在iframe中显示加载动画。一旦php脚本完成运行,ajax加载脚本就会加载完成的php脚本输出。

更新:我已通过替换:

解决了这个问题
url='action.php?run=go';
http.open("GET",url, true);

使用:

http.open( "GET", "go.php?random=" + Math.random(), true);

我读到IE缓存每个请求,并不喜欢多次发送请求。

<!DOCTYPE html> 

<script type="text/javascript">
document.write('<link rel="stylesheet" href="../css/loading.css" type="text/css" /><div id="loading"><br><center>Please Wait...<br><br><img src="loader.gif"/><center></div>');
//Ajax Function

function getHTTPObject() {
    var xmlhttp;
    if (window.ActiveXObject) {
        try {
            xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
        } catch (e) {
            try {
                xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (E) {
                xmlhttp = false;
            }
        }
    } else {
        xmlhttp = false;
    }
    if (window.XMLHttpRequest) {
        try {
            xmlhttp = new XMLHttpRequest();
        } catch (e) {
            xmlhttp = false;
        }
    }
    return xmlhttp;
}
//HTTP Objects..
var http = getHTTPObject();

//Function which we are calling...

function AjaxFunction() {
    url = 'action.php?run=go';
    http.open("GET", url, true);
    http.onreadystatechange = function () {
        if (http.readyState == 4) {
            //Change the text when result comes.....
            document.getElementById("loading").innerHTML = http.responseText;
        }
    }
    http.send(null);
} 
</script>
</head>
<body onload="AjaxFunction()">
</body>

2 个答案:

答案 0 :(得分:0)

在测试ActiveXObject之前尝试xmlhttp = new XMLHttpRequest();内容。后者用于与旧版IE(我相信IE 5和6)的兼容性。但是,较新版本的IE支持使用 XMLHttpRequest 对象。您也可以尝试正确缩进以使代码可读。

另外,既然你提到你是JS&amp; AJAX,你真的应该考虑使用jQuery,这使得使用AJAX非常容易。我个人使用jQuery以及我自己的AJAX函数,因此,在实践中,你正在做的事情非常好。但是如果你宁愿没有麻烦,那么jQuery就是你要走的路。

答案 1 :(得分:-2)

你能用jQuery吗?它有$ .ajax所需的ajax所有锅炉电镀