ホームページ >ウェブフロントエンド >jsチュートリアル >私の JavaScript コードがローカル テキスト ファイルを読み取れないのはなぜですか?それを修正するにはどうすればよいですか?

私の JavaScript コードがローカル テキスト ファイルを読み取れないのはなぜですか?それを修正するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-17 20:44:10453ブラウズ

Why Can't My JavaScript Code Read Local Text Files, and How Can I Fix It?

ブラウザでのローカル テキスト ファイルの読み取りのトラブルシューティング

基本的なテキスト ファイル リーダーを作成するために、JavaScript 関数が開発されました。ファイル パス内の各行を文字配列に解析しましたが、エラーが発生しました。この記事は、これらの問題を診断して解決することを目的としています。

エラー診断

最初、コードはファイルのパスを正常に取得したにもかかわらず、テキスト コンテンツを表示できませんでした。デバッグの際、XMLHttpRequest オブジェクトがローカル ファイル アクセスを正しく処理していないことが判明しました。

Firefox に変更すると成功した結果が得られ、ブラウザ固有の問題の可能性が浮き彫りになりました。特に Chrome は、ネットワーク エラーを示す XMLHttpRequest 例外 101 をスローしていました。

ブラウザの互換性に関するソリューション

ブラウザの互換性の問題に対処するために、Fetch API、 2015 年に JS に導入され、URL からデータをフェッチするためのよりシンプルかつ堅牢なアプローチを提供します。コードの更新バージョンは次のとおりです。

fetch("myText.txt")
  .then((res) => res.text())
  .then((text) => {
    // process the text content
  })
  .catch((e) => console.error(e));

ローカル ファイルへのアクセス

最新のブラウザでは、ファイル システムへの直接アクセスが厳しく制限されているため、file:/// の使用は避けてください。 。代わりに、 python -m http.server や npx http-server などの軽量 Web サーバーを使用して、標準 HTTP URL 経由でデータをロードできます。 XMLHttpRequest を使用してローカル ファイルにアクセスすると、ステータスが返されません。これを解決するには、ステータス 0 のチェックが必要です。

使用例

更新されたコードを使用するには、file:// を使用してファイル パスを指定します。 /:
function readTextFile(file) {
  var rawFile = new XMLHttpRequest();
  rawFile.open("GET", file, false);
  rawFile.onreadystatechange = function () {
    if (rawFile.readyState === 4) {
      if (rawFile.status === 200 || rawFile.status == 0) {
        // process the text content
      }
    }
  };
  rawFile.send(null);
}

以上が私の JavaScript コードがローカル テキスト ファイルを読み取れないのはなぜですか?それを修正するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。