22

重複の可能性:
jquery - テキスト ファイルを読みますか?

jQuery を使用して、ローカルのテキスト ファイルを読みたいと考えています。だから私はこれを試します:

$.get('file_to_read.txt', function(data) {
   do_something_with(data)
});

ただし、jQuery は「file_to_read.txt」を html ファイルとして解釈し、データが文字列ではないため、適切にフォーマットされておらず、「do_something_with」が目的の効果を持たないため、Javascript エラーが発生します。

jQuery doc には、データ型を指定する必要があると書かれています。ただし、可能なデータ ファイルとして html、xml、json、およびスクリプトのみがリストされています。文字列に直接ロードしたいプレーンな txt ファイルをどうすればよいですか?

4

2 に答える 2

48

'text'リクエストでデータ型を使用します$.get()

$.get('file_to_read.txt', function(data) {
   do_something_with(data)
}, 'text');
 //  ^------last argument

それ以外の場合、jQuery は何が返されたかを推測します。


Remeber$.getは、 の便利なラッパーです$.ajax$.ajax()データ型はドキュメントにリストされています...

データ・タイプ

デフォルト: Intelligent Guess (xml、json、script、または html)

サーバーから返されることを期待しているデータのタイプ。何も指定されていない場合、jQuery は応答の MIME タイプに基づいてそれを推測しようとします (XML MIME タイプは XML を生成し、1.4 では JSON は JavaScript オブジェクトを生成し、1.4 ではスクリプトがスクリプトを実行します。文字列として返されます)。利用可能な型 (および成功のコールバックに最初の引数として渡される結果) は次のとおりです。

"xml": jQuery 経由で処理できる XML ドキュメントを返します。

"html": HTML をプレーン テキストとして返します。含まれている script タグは、DOM に挿入されたときに評価されます。

"script": 応答を JavaScript として評価し、プレーン テキストとして返します。キャッシュ オプションが true に設定されていない限り、クエリ文字列パラメーター "_=[TIMESTAMP]" を URL に追加してキャッシュを無効にします。注: これにより、POST がリモート ドメイン リクエストの GET に変わります。

"json": レスポンスを JSON として評価し、JavaScript オブジェクトを返します。jQuery 1.4 では、JSON データは厳密な方法で解析されます。不正な形式の JSON は拒否され、解析エラーがスローされます。(適切な JSON 形式の詳細については、json.org を参照してください。)

"jsonp": JSONP を使用して JSON ブロックに読み込みます。「?callback=?」を追加します。URL の末尾に追加して、コールバックを指定します。キャッシュ オプションが true に設定されていない限り、クエリ文字列パラメーター "_=[TIMESTAMP]" を URL に追加してキャッシュを無効にします。

"text": プレーン テキスト文字列。

スペースで区切られた複数の値: jQuery 1.5 以降、jQuery は dataType を Content-Type ヘッダーで受け取ったものから必要なものに変換できます。たとえば、テキスト応答を XML として処理する場合は、dataType に「text xml」を使用します。また、JSONP リクエストを作成し、それをテキストとして受け取り、jQuery によって XML として解釈することもできます: 「jsonp text xml」。同様に、「jsonp xml」などの短縮文字列は、最初に jsonp から xml への変換を試み、失敗すると jsonp からテキストに変換し、次にテキストから xml に変換します。

于 2012-04-11T19:23:43.410 に答える
1

dataType "text" (または "html"、html の "script" タグが含まれていない場合は機能するはずです) を試してください。

于 2012-04-11T19:24:30.440 に答える