2011-12-03 8 views
3

IE9とテキストエディタを使ってWebアプリケーションを開発しました。 JSONファイルを読み込み、そのファイルとJavaScriptおよびjQueryコードのロジックに従ってDIV要素を塗りつぶします。 IE9では完全に動作します。

Chromeでは、$ .getJSON()ステートメントを実行できないため、データは使用できません。 FireFoxの下では、$ .getJSON()文が明らかに実行されます(警告メッセージはこれを証言します)。しかし、何も読み込まれません。

JSONファイルはJSONLintを渡します。

ChromeとFireFoxのいずれもエラーを示していません。

JSONサイトのJSONデータを使用してサンプルファイルを作成し、JSONLintで検証してから、そのファイルを使用してコードを実行しました。違いはありません - Chromeはまだ$ .getJSON()ステートメントを無視します。

私のコードの関連セクション:

function buildTree(centralID) { 
     alert("Can we start, at least?"); 
    $.getJSON('sample.json', function(data) { 
     alert("first success"); 
     $.each(data.person, function(i, xdata) { 

クロームは最初の警告ではなく、秒を表示します。

アイデア?

答えて

2

エラー機能を組み込み、デバッグすることができます。

$(document).ready(function(){ // Make sure your jQuery is inside this 
$.getJSON("sample.json", function(data) { 
    alert('Point 1 Reached.'); 
    console.log(data); // Here we log to our console 
    $.each(data.feed.entry, function(i, item) { 
      // Do your stuff here 
     }); // End of $.each 

// Here Success, Completed & Error do something. chained onto $.getJSON 
     }).success(function() { alert("success"); }) 
      .error(function(jqXHR, textStatus, errorThrown) { // Debug the error!! 
        console.log("error " + textStatus); 
        console.log("error throw " + errorThrown); 
        console.log("incoming Text " + jqXHR.responseText); 
       }) // End of .error 
      .complete(function() { alert("complete"); }); 
     }); 
}); // End of DOM Ready 

これは、あなたのFirefoxやクロムのコンソールウィンドウにエラーを(にconsole.logはIEで動作し、スクリプトを中断されません)が表示されるはずです。 firefoxまたはchromeでコンソールウィンドウを起動するには、F12を押します。 JSONが機能しない場合は、デバッグできるエラーが表示されます。


更新
また、このコードは、あなたの$(document).ready()であることを確認してください。 $ .getJSON()を使用すると、ブラウザ間で予期せぬ動作が発生する可能性があります。

+0

これはやっていると思います。私はこれを非常に慎重に取り上げる必要がありますが、私はすでにChromeが(少なくとも)同じフォルダにあるJSONファイルを「見つける」ことができないというコンソールログを見ています。なぜそれを開くことができないのではないにしても、なぜそれを開いていないのか説明しています。これを指摘し、拡張された$ .getJSON()構文を明確にすることに感謝します。ドキュメントはこの拡張構文を示していますが、自分のコードを配置する方法は明確ではありませんでした。 –

2

これはWebサーバー上で実行されていますか、またはブラウザでファイルを開くだけですか?ファイルを開いているだけの場合は、問題が発生します。

+0

うわー、私は分かりませんでした。しかし、私の開発マシンでlocalhostを使用しても何も変わりません。ここには何の理論がありますか? –

+0

Ajaxを介してアクセスできるもののルールは異なります。実際の内容はわかりませんが、私は常にWA Webサーバーからすべてを実行します。 – BNL

+0

私は今数週間前に同様のことを調べると、Chromeが「ローカルアクセス」を許可しないというChromeの正しさに関する論争の証拠を見つけたことを思い出しています。私はその時に他の問題を抱えていたので、すぐにこれを忘れてしまった。私は、あなたがおそらく示唆しているように、(開発マシンのIISから)サーバーにすべてを移動すると、それはうまくいくはずだと推測します。 –