$ .getJson()はIE9で動作しますが、ChromeとFirefoxでは機能しませんが、私のコードで何が問題になっていますか?
-
27-10-2019 - |
質問
IE9とテキストエディターを使用してWebアプリケーションを開発しました。 JSONファイルを読み取り、そのファイルとJavaScriptおよびjQueryコードのロジックに従っていくつかのDiv要素を埋めます。 IE9では、完全に機能します。
Chromeでは、$ .getjson()ステートメントを実行できないため、データはありません。 Firefoxの下では、$ .getJson()ステートメントは明らかに実行されています(アラートメッセージはこれを証言します)が、何も読みません。
JSONファイルはjsonlintを通過します。
ChromeもFirefoxもエラーを示していません。
JSONサイトのJSONデータを使用してサンプルファイルを作成し、JSONLINTを介して検証し、そのファイルを使用してコードを実行しました。違いはありません - クロームはまだ$ .getjson()ステートメントを無視します。
私のコードの関連セクション:
function buildTree(centralID) {
alert("Can we start, at least?");
$.getJSON('sample.json', function(data) {
alert("first success");
$.each(data.person, function(i, xdata) {
Chromeは最初のアラートを表示しますが、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またはChromeのコンソールウィンドウにエラーが表示されるはずです(Console.logはIEで機能し、スクリプトを破壊しません)。 FirefoxまたはChromeプレスのコンソールウィンドウを表示するには F12
. 。 JSONが機能していない場合、デバッグできるエラーが表示されます。
アップデート
また、このコードがあなたの中にあることを確認してください $(document).ready()
. 。 $ .getJson()は、ブラウザ全体で予期しない動作を引き起こす可能性があります。
他のヒント
これはWebサーバーで実行されていますか、それともブラウザでファイルを開いているだけですか?ファイルを開いているだけなら、問題が発生します。