Javascript AJAX加载程序GIF,而异步POST请求不';我不在IE工作
我试图在执行异步POST请求时显示AJAX加载程序gif。不幸的是,这在Interet Explorer中不起作用!会显示Gif,但请求过程似乎会相应停止。更改的Web内容将不会显示。在FF,歌剧院,狩猎,一切都很好!有什么想法吗Javascript AJAX加载程序GIF,而异步POST请求不';我不在IE工作,javascript,html,ajax,Javascript,Html,Ajax,我试图在执行异步POST请求时显示AJAX加载程序gif。不幸的是,这在Interet Explorer中不起作用!会显示Gif,但请求过程似乎会相应停止。更改的Web内容将不会显示。在FF,歌剧院,狩猎,一切都很好!有什么想法吗 http_request.onreadystatechange = function() { if (http_request.readyState < 4) { var waitingPageBody = '< img src="/i
http_request.onreadystatechange = function()
{
if (http_request.readyState < 4)
{
var waitingPageBody = '< img src="/img/ajaxloader.gif" alt="request in progress..."/>';
document.body.innerHTML = waitingPageBody;
}
else //if (http_request.readyState == 4)
{
if (http_request.status == 200)
{
document.body.innerHTML = http_request.responseText;
}//end of if (http_request.status == 200)
else
{//other http statuses
alert("There was a problem");
}
} //end of else if http_request.readyState == 4
}
...
http_request.onreadystatechange=function()
{
if(http_request.readyState<4)
{
var waitingPageBody='”;
document.body.innerHTML=waitingPageBody;
}
else//if(http_request.readyState==4)
{
如果(http_request.status==200)
{
document.body.innerHTML=http_request.responseText;
}//if结束(http_request.status==200)
其他的
{//其他http状态
警惕(“出现问题”);
}
}//如果http_request.readyState==4,则结束else
}
...
您已经向我们展示了事件处理代码,但是您正在调用open()
和send()
您的事件处理代码似乎在FF3.5、IE6和IE8中工作:(可通过以下方式编辑:) 完整资料来源:
<!DOCTYPE html>
<html>
<head>
<title>Sandbox</title>
<script>
function load() {
var http_request = window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest();
http_request.open('GET', 'http://jsbin.com/blank.html', true);
http_request.onreadystatechange = function() {
if (http_request.readyState < 4) {
var waitingPageBody = 'request in progress...';
document.body.innerHTML = waitingPageBody;
}
else {
//if (http_request.readyState == 4)
if (http_request.status == 200) {
document.body.innerHTML = '<pre>' + entity(http_request.responseText) + '</pre>';
}//end of if (http_request.status == 200)
else {
//other http statuses
alert("There was a problem");
}
} //end of else if http_request.readyState == 4
};
http_request.send();
}
function entity(str) {
return str.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">");
};
</script>
</head>
<body onload="load();">
</body>
</html>
';
}//if结束(http_request.status==200)
否则{
//其他http状态
警惕(“出现问题”);
}
}, 0);
}
功能实体(str){
返回str.replace(//&/g,“&;”)。replace(//g,”);
}
您已经向我们展示了事件处理代码,但是您正在调用
open()
和send()
您的事件处理代码似乎在FF3.5、IE6和IE8中工作:(可通过以下方式编辑:) 完整资料来源:
<!DOCTYPE html>
<html>
<head>
<title>Sandbox</title>
<script>
function load() {
var http_request = window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest();
http_request.open('GET', 'http://jsbin.com/blank.html', true);
http_request.onreadystatechange = function() {
if (http_request.readyState < 4) {
var waitingPageBody = 'request in progress...';
document.body.innerHTML = waitingPageBody;
}
else {
//if (http_request.readyState == 4)
if (http_request.status == 200) {
document.body.innerHTML = '<pre>' + entity(http_request.responseText) + '</pre>';
}//end of if (http_request.status == 200)
else {
//other http statuses
alert("There was a problem");
}
} //end of else if http_request.readyState == 4
};
http_request.send();
}
function entity(str) {
return str.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">");
};
</script>
</head>
<body onload="load();">
</body>
</html>
';
}//if结束(http_request.status==200)
否则{
//其他http状态
警惕(“出现问题”);
}
}, 0);
}
功能实体(str){
返回str.replace(//&/g,“&;”)。replace(//g,”);
}
窗口将冻结,因为请求是同步的。每当javascript代码执行时,浏览器就会冻结,运行同步请求相当于在浏览器等待响应的整个时间内运行javascript代码。窗口将冻结,因为请求是同步的。每当javascript代码执行时,浏览器就会冻结,运行同步请求相当于在浏览器等待响应的整个过程中运行javascript代码。@dforce:此处无答案,但您可能希望尝试使用JQuery之类的框架来处理http\U请求的实质,同时关注业务逻辑。不幸的是,我无法在我的特殊上下文中为您提供这些库。@dforce:这里没有答案,但是,您可能希望在关注业务逻辑的同时,尝试使用JQuery之类的框架来处理http_请求的本质。不幸的是,我无法在我的特殊上下文中使用这些库。当然。这是我的部分:http_request.open(“POST”,url,false)//异步http_请求.setRequestHeader(“连接”,“关闭”);http_request.send(参数);对于异步的东西,这里有'false'。那对我来说就行了。但这不是我锁定的目的…因为您使用的是同步请求,我已使用正确的代码编辑了答案。我将尝试此。。。但是我们如何防止窗口冻结问题呢?我还希望http_request.open也是如此。如果出于某种原因,您真的不想使用异步请求,那么您必须确保您的目标受众能够快速访问您的服务器,并且您的服务器不会花费太长时间来处理请求。确定。这是我的部分:http_request.open(“POST”,url,false)//异步http_请求.setRequestHeader(“连接”,“关闭”);http_request.send(参数);对于异步的东西,这里有'false'。那对我来说就行了。但这不是我锁定的目的…因为您使用的是同步请求,我已使用正确的代码编辑了答案。我将尝试此。。。但是我们如何防止窗口冻结问题呢?我还希望http_request.open也是如此。如果出于某种原因,您真的不想使用异步请求,那么您必须确保您的目标受众能够快速访问您的服务器,并且您的服务器不会花费太长时间来处理请求。+1只需发出异步请求,所以浏览器不会停止,这就是异步请求的用途,这就是AJAX+1中的A只是发出异步请求,所以浏览器不会停止,这就是异步请求的用途,这就是AJAX中的A