私はすべてのjsonファイルを.txt拡張子で保存してきましたが、それらはjqueryajax呼び出しで機能しました。
拡張子を.jsonに変更し、jqueryajax呼び出しで--jQuery.ajax()-を指定すると
ファイルは機能しなくなります。なぜそうなのか?
すべてのjsonファイルに拡張子.jsonを付ける必要はありませんか? IISサーバーを使用しています。
[〜#〜] json [〜#〜]
{ "rows": [
{"row":[
{"cells": [
{"data": "Edit"},
{"data": "030194"}
]}
]},
{"row":[
{"cells": [
{"data": "Add"},
{"data": "030194"}
]}
]}
]}
jQuery
jQuery.ajax ({
type: "GET",
url: "localhost/ABC.json",
dataType: "json",
contentType: "application/json;
charset=utf-8",
cache: "false",
success: function(response){}
});
拡張子.jsonが機能しない理由を教えてもらえますか?.txtに変更すると機能します
正しい拡張子は.json
、mimeタイプはapplication/json
(参照: このウィキペディアのページ )。ただし、一般的に言えば、データ構造が有効であり、Webサーバーが想定どおりに動作している限り、どの拡張子でも機能するはずです。
IISには、一連のMIMEタイプハンドラーがバンドルされています。これは、たとえば.png
で終わるURLを入力すると、IISはこれが画像であることを認識し、適切な応答をディスパッチしてクライアント(ブラウザ)に次のことを通知することを意味します。これは画像です(したがって、そのようにレンダリングできます)。
.json
にはデフォルトでMIMEタイプハンドラーがありません。次のいずれかを設定する必要があります。
.txt
を入力し、MIMEタイプとしてapplication/json
を入力します完了です。ブラウザでJSONファイルをリクエストしてみてください。それが(テキストとして)正しくレンダリングされれば、素晴らしいです。そうでない場合は、代わりにtext/plain
としてレンダリングするようにIISに指示する必要があります。
dataType: "json"はファイルのタイプを指定するのではなく、サーバーが返すデータの種類を指定するのです。サーバー側から、たとえばphpを使用している場合は、関数 "json_encode"を使用してjson文字列を返す必要があります。これにより、dataType: "json"で受け入れることができます。