1

私はこれをしばらく探していました。私の問題は他の人が投稿している同等の問題よりもはるかに簡単に見えますが、それでも解決策を見つけることができません。

配列に.txtファイルのコンテンツを入力したいのですが。(他の人がこの問題を抱えているのとは反対に)、txtファイルの内容はすでに[1, 2, 3], [a, b, c], ...etcの形式になっているので、何もする必要はありません。したがって、私がやりたいのは印刷だけです。のtxtファイルのコンテンツ

<script>との間のどこかに</script>、次のようなものがあります。

var locations = [
*contents of the txt file should go here*
];

それでおしまい!txtファイルからコンテンツを取得してjavascriptで印刷する方法はありますか?

4

3 に答える 3

4

ブラウザのコンテキストで JavaScript を使用していると仮定すると、これは不可能です。セキュリティ制限により、ブラウザで実行されているスクリプトがホストのファイル システムにアクセスできなくなります。

編集:素晴らしいコメントみんな!HTML5 を使用できる場合は、FileAPI (ドラフト) 標準を使用していくつかのファイル アクセス機能を利用できます。

Paul Sは、次の jsbin を提供してくれました: http://jsbin.com/ulodaj/1/

理想的には、そのテキスト ファイルを JSON 形式にしてから、FileAPI を使用してディスクから文字列を読み取ります。そこから、ただlocations = JSON.parse(fileText)

編集:テキストファイルがPHPサイトのディレクトリにある場合、PHPを使用してファイルを読み取り、OPに示されているようにデータを書き込んでみませんか?

ここでキャッチするのは、入力ファイルを有効な JSON にしたいということですが、そうで[1, 2, 3], [a, b, c]はありません。への小さな変更で{ foo: [a,b,c], bar: [1,2,3] }うまくいきます。using については言及しないことに注意してくださいeval。なぜなら、それは悪だからです。それを使用しないでください:)

于 2013-01-23T21:30:44.127 に答える
2

File APIを使用しFileReaderて、ローカル マシンでユーザーが選択したファイルにアクセスします。これは、ほとんどの最新のブラウザーで利用できます。次のようなもので目的のアクションを実現できます ()。

var locations;
input.onchange = function () { // `input` some <input type="file">
    var fr = new FileReader();
    fr.onload = function (e) {locations = this.result.split("\n");}; // make this callback your next stage
    fr.readAsText(this.files[0]);
}

これはイベント ドリブンであるため、コールバックを使用する必要があることに注意してください。

于 2013-01-23T22:04:16.280 に答える
0

まず第一に、問題を詳しく説明していないことをお詫びします。私は自分の問題の解決策を見つけました。私はここではかなり新しいです (そしてプログラマーとしてはそれほど得意ではありません) が、答えを説明しようと思います。

まず、問題:セクション にいくつかの JavaScript コードがある php ページがあります<head>。そのJavaScriptでは、txtファイルからコンテンツをロードしたいと考えています。txt ファイルにある正確なテキストは次のとおりです。

var locations = [
['a', 123, 456, 'foo', 'bar'],
[...],
['b', 456, 789, 'bar', 'foo'],
];

私はこれが正確に美しい解決策ではないことを知っており、そのvar locations [];部分がtxtファイルではなくjavascriptにある必要があることを知っていますが、これは私にとってはうまくいきます.

解決策: javascript<?php echo file_get_contents('text.txt'); ?>で、テキストファイルの内容を表示したい場所に配置しました。それだけです!

それが私の問題を解決する理由は、場所の配列を頻繁に更新する必要があり、コードが約 30 ページに表示されるためです。新しい場所ができたときに、これらのページのすべてのセクションを更新する必要はありませんでした<head>。そのため、外部ファイルから場所を取得するコードを JavaScript に追加したいと考えました。これで、1 つのファイルを更新するだけで済みます。

繰り返しますが、私は自分の問題を明確に説明していなかったことを認識していますが、同じ問題を抱えている他の人がこの解決策を使用できることを願っています!

于 2013-01-25T13:30:42.970 に答える