我有一个运行 PHP 脚本的 AJAX 请求,我想处理请求返回状态 500 的情况。
我的代码在 Chrome 和 Firfox 上运行,但在 IE9 上,如果我添加一个条件,if(httpRequest.status==500)
我会收到以下 JavaScript 错误:
Could not complete the operation due to error c00c023f
.
我在页面上有一个加载图像,由于这个错误,我无法替换图像,并且页面似乎继续加载。就像这里引用的那样:
特别是如果您在执行请求时显示“加载动画”或类似内容。在我的情况下,结果似乎页面从未停止加载
首先,这是我的 AJAX 调用代码:
function sendRequest(url, params, divToChange)
{
// code for IE7+, Firefox, Chrome, Opera, Safari
if (window.XMLHttpRequest)
{
var httpRequest = new XMLHttpRequest();
}
else // code for IE6, IE5
{
var httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
}
//open the request and prepare variables for the PHP method being activated on server side//
httpRequest.open("POST", url, true);
//Set request headers for POST command//
httpRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
if(divToChange != "false")
{
httpRequest.onreadystatechange=function()
{
if(httpRequest.readyState==4 && httpRequest.status==200)
{
document.getElementById(divToChange).innerHTML=httpRequest.responseText;
eval(document.getElementById("runscript").innerHTML);
}
else if (httpRequest.status==500)
{
document.getElementById(divToChange).innerHTML=httpRequest.responseText;
//eval the lang variable from the php script.
eval(document.getElementById("runscript").innerHTML);
if(lang == "en")
{
document.getElementById(divToChange).innerHTML='<b> An error accured, please try again later</b>';
}
else
{
document.getElementById(divToChange).innerHTML='<b> שגיאה התרחשה, בבקשה נסה שנית מאוחר יותר</b>';
}
}
}
}
httpRequest.send(params); //sending the request to the server//
}
我已经搜索过它并在 stack 上找到了这篇文章。从那里,我找到了这句话:
就在您调用 XmlHttpRequest.abort() 方法之前,在其上设置一个标志,我是这样做的:
XmlHttpRequest.aborted = true;
XmlHttpRequest.abort();
In the onreadystatechanged handler, the first lines of code in my case is:
if (xmlHttpRequest.aborted==true) {
stopLoadAnimation();
return;
}
但就我而言,我什至不打电话XmlHttpRequest.abort()
,那为什么我会首先收到错误消息?
顺便说一句,如果我删除所有条件else if (httpRequest.status==500)
和其中的所有代码,我不会收到错误消息,但话又说回来,我将无法在 500 错误上显示消息。