0

同じサブディレクトリに含まれるファイルからプルしようとすると、何らかの理由でXMLHttpRequest().responseTextが空になります。

XMLHttpRequest().status == 200をチェックしていません。検索中に発見できたことから、要求されたファイルがローカルの場合、ステータスは常に 0 になるためです。これは、数分前に発生した問題です。XMLHttpRequest().readyState == 4 && XMLHttpRequest().status == 200をチェックしています。これは、Web サーバーを経由しないためです。

ファイル (data.txt) にはプレーン テキストが含まれていますが、responseTextは常に空で返され、その理由がわかりません。どんな助けでも大歓迎です!

更新: Firefox では動作するようですが、Chrome (テストに使用していた) または IE では動作しません。これらのブラウザはresponseTextにデータを入れていないので、それを修正する理由、またはより良い方法を知っている人はいますか?

function loadData()
{
    var request = new XMLHttpRequest();
    request.open("GET", "data.txt", true);
    request.onreadystatechange = function()
    {
        if (request.readyState == 4)
            useData(request.responseText);
    }
    request.send(null);
}
4

1 に答える 1

1

これは、たとえばメール ファイルの添付ファイルとして共有される JavaScript のエクスプロイトを防ぐための設計によるものです (デスクトップ アプリケーション用のドメインに沿ったものは存在せず、ファイルシステムは 1 つしかないため)。開発時には、--disable-web-securityフラグを使用して chrome でこのセキュリティ機能を無効にすることができますが、一般的にはそれが不可能であることを受け入れる必要があります。

于 2012-07-06T18:11:09.170 に答える