jsonファイルが見つからないのはなぜですか?


85

asp.netプロジェクト内のContentフォルダーにjsonファイルがあります。

<projectName>
    \Content
        NBCCJr.json

...そしてそれにアクセスするためのコード:

$.getJSON('~/Content/NBCCJr.json', function (data) {
    $.each(data, function(i, dataPoint) {
        // Bla
      });
  });
)

...しかし、コードが呼び出されても何も起こりません。ブラウザコンソールに「リソースの読み込みに失敗しました:サーバーがステータス404(見つかりません)で応答しました」と表示されます

なぜ見つからないのですか?「チルダワックファイル名」はファイルへの正しいルートではありませんか?

更新

また、「強打」を逆にして試してみました。

$.getJSON('~\Content\NBCCJr.json', function (data) {

...そして同じ結果が得られました( "リソースの読み込みに失敗しました:サーバーはステータス404(見つかりません)で応答しました")

更新2

それから私はそれをこのように付加された強打なしで試しました:

$.getJSON('Content/NBCCJr.json', function (data) {

...そして、コンソールにこのあいまいなメッセージが表示されます。

*GET http://localhost:9702/Content/NBCCJr.json 404 (Not Found) jquery.js:8724
XHR finished loading: "http://localhost:9702/Content/NBCCJr.json".*

それで、それは見つかりませんでしたが、とにかくロードされましたか?

更新3

次の変更を行ってブラウザでファイルに移動しようとしたとき:

http://localhost:9702/Default.cshtml

...に:

http://localhost:9702/Content/NBCCJr.json

Vint Cerf、Tim Berners-Lee、および/またはAlGoreから次のような有益なWSODメッセージを受け取りました。

HTTPエラー404.3-見つかりません拡張機能の構成が原因で、要求しているページを提供できません。ページがスクリプトの場合は、ハンドラーを追加します。ファイルをダウンロードする必要がある場合は、MIMEマップを追加します。

更新4

JAMのおかげで、現在は機能しています。

これをWeb.Configに追加する必要がありました。

  <system.webServer>
    <staticContent>
      <mimeMap fileExtension=".json" mimeType="application/json" />
    </staticContent>
  </system.webServer>

今のところコードについて心配する必要はありません。最初にブラウザでファイルを見つけることができるかどうかを確認してください
Lee Taylor

そのため、表示されている行の後にすべてのコードをコメントアウトしました。IOW、関数は空です。
B.クレイシャノン

ブラウザにjsonを表示できましたか?つまり、URLをアドレスバーに直接入力しますか?
リーテイラー

@greg:それは何を「食いしばった」のですか?
B.クレイシャノン

2
アップデート4が解決しました!Thks \ o /
rodrigorf 2017年

回答:


97

削除してみました~か?

のように:

$.getJSON('/Content/dumboJr.json', function (data) {
    $.each(data, function(i, dataPoint) {
        // Bla
      });
  });
)

IISがJSONファイルを提供できるようにするには、これをweb.configに追加してみてください。

<staticContent>
    <mimeMap fileExtension=".json" mimeType="application/json" />
</staticContent>

はい(今私は持っています)。これ:$ .getJSON( '/ Content / NBCCJr.json'、function(data){は同じ応答を返します。–
B. Clay Shannon

404応答ですか?ブラウザで直接ファイルに移動してみましたか?コンテンツフォルダはWebプロジェクトのルートにありますか?
JAM

はい、投稿にはそう書かれています。私のアップデートをご覧ください。はい、元の投稿に示されているように、コンテンツは第1レベルのフォルダーです。
B.クレイシャノン

この投稿を見てください。
JAM

指定されたweb.configmimeタイプを追加すると、問題ありません:)
JAM

22

解決策は、MIMEタイプにjsonファイル拡張子タイプを追加する必要があることです

方法1

IISに移動し、アプリケーションを選択してMIMEタイプを検索します

ここに画像の説明を入力してください

右パネルから追加をクリックします

ファイル名拡張子= .json

MIMEタイプ= application / json

ここに画像の説明を入力してください

MIMEタイプに.jsonファイルタイプを追加した後、IIS再起動してjsonファイルにアクセスしてみてください


方法2

そのアプリケーションのweb.configに移動し、この行を追加します

 <system.webServer>
   <staticContent>
     <mimeMap fileExtension=".json" mimeType="application/json" />
   </staticContent>
 </system.webServer>

2

* .jsonファイルをサブフォルダーではなくwebRootに配置してみてください。そして、次のように参照します。

$.getJSON('NBCCJr.json', function (data) {

もちろん、これには、jquery.min.jsからのjQueryシステムオブジェクトまたはjson2-1.0.min.jsからのJSON構造の以前の包含とインスタンス化が必要です。


1

.jsonを.txtに変更しましたが、リクエストは正常に機能しています。.txtが引き起こす可能性のある結果についてはよくわかりません。


1

を使用する場合ASP.NET Coreは、ファイルを挿入wwwrootするだけですが、ASP.NETフレームワークを使用する場合は、次のようにweb.configからJSON拡張を許可します。

<staticContent>
    <mimeMap fileExtension=".json" mimeType="application/json" />
</staticContent>

そして

<location path="Content">
    <system.web>
        <authorization>
            <allow users="*" />
        </authorization>
    </system.web>
</location>
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.