web-dev-qa-db-ja.com

JSONファイル拡張子

私はすべてのjsonファイルを.txt拡張子で保存してきましたが、それらはjqueryajax呼び出しで機能しました。

拡張子を.jsonに変更し、jqueryajax呼び出しで--jQuery.ajax()-を指定すると

  • dataType: "json"、
  • contentType: "application/json; charset = utf-8"、

ファイルは機能しなくなります。なぜそうなのか?

すべての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に変更すると機能します

8
techlead

正しい拡張子は.json、mimeタイプはapplication/json(参照: このウィキペディアのページ )。ただし、一般的に言えば、データ構造が有効であり、Webサーバーが想定どおりに動作している限り、どの拡張子でも機能するはずです。

6

IISには、一連のMIMEタイプハンドラーがバンドルされています。これは、たとえば.pngで終わるURLを入力すると、IISはこれが画像であることを認識し、適切な応答をディスパッチしてクライアント(ブラウザ)に次のことを通知することを意味します。これは画像です(したがって、そのようにレンダリングできます)。

.jsonにはデフォルトでMIMEタイプハンドラーがありません。次のいずれかを設定する必要があります。

  • ロードIISマネージャー
  • WebアプリまたはWebサイトまでのツリーノードを参照します
  • MIMEタイプ機能をダブルクリックします(下のペイン)
  • [追加]をクリックします([追加]の下のRHS、または右クリックして[追加]を選択します)
  • 拡張フィールドの下に.txtを入力し、MIMEタイプとしてapplication/jsonを入力します

完了です。ブラウザでJSONファイルをリクエストしてみてください。それが(テキストとして)正しくレンダリングされれば、素晴らしいです。そうでない場合は、代わりにtext/plainとしてレンダリングするようにIISに指示する必要があります。

4
ashes999

dataType: "json"はファイルのタイプを指定するのではなく、サーバーが返すデータの種類を指定するのです。サーバー側から、たとえばphpを使用している場合は、関数 "json_encode"を使用してjson文字列を返す必要があります。これにより、dataType: "json"で受け入れることができます。

0
linuxtotal