这是我的代码:
http_request = new XMLHttpRequest();
if (http_request.overrideMimeType) http_request.overrideMimeType('text/javascript');
http_request.onreadystatechange = alertContents;
http_request.open('POST', base_url, true);
http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
http_request.setRequestHeader("Content-length", parameters.length);
http_request.setRequestHeader("Connection", "close");
http_request.send(parameters);
在最新的Firefox中运行。
此代码通常可以正常工作,但是当调用的页面产生500内部服务器错误时,javascript停止在页面上运行,并且使用setInterval / setInterval调度的其他事件不会被执行。为什么会这样?我怎么抓住它?
答案 0 :(得分:0)
问题可能在您的alertContents功能中(未在您的问题中显示)。 .onreadystatechange调用的函数几乎总是看起来像这样:
var callback = function() {
if (http_request.readyState==4 && http_request.status==200) {
// do stuff
}
}
如果页面产生500 Http代码,则if语句将失败,并且回调中的其余代码将不会执行。要抓住它,请添加:
else if(http_request.readyState==4 && http_request.status==500) {
console.log('The server\'s on fire!');
}