2016-03-23 12 views
-1

静的なWebサイトを使用しています。これはjettyサーバー(テスト用)とgithubページ(live)を使用してローカルマシンで実行しています。JSON.parse:ネットワーク上での動作が異なります

ソースコードは、両方のサイトでまったく同じです。 私は上記のコードは、(私のローカルサーバー上で実行中にうまく働いたが、githubのサーバ上で実行中に失敗した私は最近、jQueryのAjaxの

$.ajax({ 
     url: jsonFilePath, 
     error: function (response) {... }, 
     success: function (responsedata) { 
      var responsedata = JSON.parse(latestData); 
      ... 

次のコードを使用し、テスト 以下のために同じブラウザ(Mozilla Firefoxの)を使用同じブラウザ)

githubで失敗しましたfor this reason。これは、ローカルサーバー上でテスト中にキャッチされていなかったのはなぜここに私の質問は、ある

$.ajax({ 
      url: jsonFilePath, 
      dataType: "json", 
      ... 

以下のように、それはデータ型を定義した後作業を開始しましたか?すべてのliberaries、data、json、js、jQueryファイルは同じです。 この動作の違いは何が原因ですか?

+0

親愛なるdownvoter、私はこの質問を改善する方法を教えてください:) –

答えて

5

$.ajaxに渡すオブジェクトにdataTypeオプションを指定していません。したがって、デフォルトではautoになります。これには2つのエフェクトがあります。

  1. Accept要求ヘッダーにJSONが優先されているとは限りません。これは、サーバーがコンテンツのネゴシエーションを行わない限り、違いはありません。
  2. Content-Type応答ヘッダーに従って応答を処理します。これがあなたを引き上げるものです。

サーバーは、jQueryのresponsedataに結果を渡す前に、それを解析します「これがJSONである」、JSONを供給し、コンテンツタイプと、述べています。これは、サーバが(サーバが誤って設定された場合、すなわち)「これはプレーンテキストである」、コンテンツタイプで、JSONを提供するが、言うならばGithubの

に何が起こっているかで、その後のjQueryはそれを行うと、あなたはありませんプレーンテキストの文字列はresponsedataになります。他の不適切なコンテンツタイプにも同様の問題が発生します。

+0

まさに。問題は、GitHubが適切なMIMEタイプ、つまり 'application/json'でJSONを配信するように正しく設定されているのに対し、ローカルサーバーは –

関連する問題