22327


**XMLHttpRequestで、readyState === 4 となる、HTTPステータスコードを教えてください**  
・403エラーや、404エラーは、ここで弾かれるでしょうか？

**また、「readyState === 4」 かつ 「HTTPステータスコードが200以上300未満」ではない 条件だと、何が該当するでしょうか？**  
・可能性があるHTTPステータスコードは？  
・(テストしてみたいので、)この状態を意図的に作り出すことは出来るでしょうか？

* * *

↓ 追記しました。  
・下記コードで、何のために条件分岐をしているのか分からなかったので質問しました。  
・elseのところでalert表示させるよう、試しにサーバ側を404エラーにしたのですが、うまくいきませんでした(別の箇所でエラーが出てしまったので)

[code]

    xhr.onreadystatechange = function () {
        if (xhr.readyState === 4) {
            if (xhr.status >= 200 && xhr.status < 300) {
            } else {
                alert("test"); //ここをalert表示させたい
            }
        }
    }
    
[/code]


CC BY-SA 3.0
2016-02-20T23:01:24.577
22326
2016-02-21T04:11:42.083
2016-02-21T04:11:42.083
7886
7886
question
javascript ajax
XMLHttpRequestで、「readyState === 4」かつ「ステータスコードが200以上300未満」ではない 状態を意図的に作り出したい


_**XMLHttpRequestで、readyState === 4 となる、HTTPステータスコードを教えてください**  
・403エラーや、404エラーは、ここで弾かれるでしょうか？_

[XMLHttpRequest(MDN)](https://developer.mozilla.org/ja/docs/Web/API/XMLHttpRequest)  
[W3Cの最新ドキュメント](https://www.w3.org/TR/XMLHttpRequest/#states)  
[HTTPプロトコル(RFC)](https://www.rfc-editor.org/rfc/rfc2616#section-4.4)  
「弾かれる」と言う表現で何を期待しているのかわかりませんが、readyStateの4:DONEはすべてのデータ転送が完了した状態を意味します。HTTPステータスコードを送ってきているということはデータ転送をしているわけですから、
**すべてのHTTPステータスコード**
に対してreadyStateは全レスポンスの受信を完了した時点で4になります。(ただしredirect系のレスポンスはXMLHttpRequestが自動的に処理してしまうので、3xxのステータスコードが受信されることはないと思います。)

_**また、「readyState === 4」 かつ 「HTTPステータスコードが200以上300未満」ではない 条件だと、何が該当するでしょうか？**  
・可能性があるHTTPステータスコードは？  
・(テストしてみたいので、)この状態を意図的に作り出すことは出来るでしょうか？_

上に書いたように3xx系以外のすべてのステータスコードで可能性があります。404:Not
Foundの場合でもレスポンスの受信が完了した時点でreadyStateは4になるので、存在しないpathに対してGETメッセージを送るだけで簡単に試せます。

この辺りのXMLHttpRequestの挙動を調べることで、実際は何に応用したいのでしょうか、もう少し上のレベルで本当は何をしたいのか、を質問された方が、より有用な回答が得られるように思いますが。


CC BY-SA 3.0
2016-02-21T01:11:13.010
22327
2016-02-21T01:11:13.010
2021-10-07T07:34:52.683
-1
13972
22326
answer