为什么500错误中断ajax调用

Why does 500 error break ajax call?

本文关键字:ajax 调用 中断 错误 为什么      更新时间:2023-10-24

这是我的代码:

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调度的其他事件将不会执行。为什么会发生这种情况?我该如何抓住它?

问题可能出现在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!');
}