2

このディスカッションでは、 XMLHttpRequestを処理し、 readyStateステータスの誤った組み合わせを防ぐための構文を次のように確認できます。

if (request.readyState == 4 && request.status == 200) { ... }

私は常に、両方のケースが独立しており、サーバーに接続する際の操作上の成功の 4 つの組み合わせすべてを可能にする、接続条件付き信頼を使用してきました。

昨日、私は考えていましたが、それらが何であるかを説明することはできないことに気づきました. 彼らは何ですか?

  1. すべてのダンディ: readyStateは完了 (4) で、ステータスは OK (200) です。
  2. 誤った通信: readyStateは完了 (4) で、ステータスは OK ではありません (!200)。
  3. まだ終了していません: readyStateは完了していません (!4) およびステータスは OK (200) です。
  4. ?!?!?!?!: : readyStateが完了しておらず (!4)、ステータスは OK (!200) です。

特に、完成していないものが、OK である場合と OK ではない場合 (ケース 3 と 4) の両方になる方法がわかりません。まだ終了していないときは、常にステータス OK (または常にステータスが OKでない) であるべきではありませんか?!

4

1 に答える 1

1

完成していないものが、OK である場合とそうでない場合 (ケース 3 と 4) の両方になる方法がわかりません。

それはあなたがテストしているものではありません。

テストは次のとおりです。準備はできていますか? いいえ?この条件は失敗します。

あなたは持っていません:

if (request.readyState != 4 && request.status == 200) { ... }

また

if (request.readyState != 4 && request.status != 200) { ... }

リクエストが完了して OKになったときの状態だけを気にします。

あなたが持っている構文は、次の省略形です。

if (request.readyState == 4) {
  if (request.status == 200) { ... }
}
于 2013-03-09T10:16:31.290 に答える