4

これは私のコードです:

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 でスケジュールされた以降のイベントは実行されません。なぜこれが起こるのですか?どうやって捕まえるの?

4

1 に答える 1

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!');
}
于 2013-05-15T06:43:58.217 に答える