5

次のコードがあります(関連する部分のみ):

xhttp=new XMLHttpRequest();
xhttp.open("GET",doc_name,false);
xhttp.send();
xmlDoc=xhttp.responseXML;
if(xmlDoc==null)
{
   xmlDoc=loadXMLDoc(defaultXml);
}

指定されたファイルが存在しない場合はデフォルトのxmlファイルをロードしますが、ファイルが存在しない場合はコンソールにのみ404エラーが表示されるため、これは正常に実行されます。(このエラーは、コンソール以外のページには反映されません)。

私の質問は、この例外をどのようにチェックすればよいですか?コードがファイルなしで実行されたときに、ファイルの存在をチェックするためのコードを追加する必要がありますか?

4

1 に答える 1

6

経由で HTTP 応答コードにアクセスできますxhttp.status。通常、200(OK) または304(Not Modified) のいずれかが要求の成功と見なされます。

xhttp=new XMLHttpRequest();
xhttp.open("GET",doc_name,false);
xhttp.send();

if (xhttp.status === 200 || xhttp.status === 304) {
    xmlDoc=xhttp.responseXML;
    if(xmlDoc==null)
    {
       xmlDoc=loadXMLDoc(defaultXml);
    }
}

最初に を使用して変数を宣言していることを確認してください。varそうしないと、暗黙のグローバルが作成され、これは悪いことです。

また、これを同期的に行う正当な理由があることを確認してください。同期 XHR は、リクエストが保留されている間、ブラウザをロックします。非同期にすることを強くお勧めします。

質問の 2 番目の部分については、まったく問題ありません。アプリが例外を処理できる限り。(これはそうです)

于 2012-05-15T08:31:55.213 に答える