2016-06-29 4 views
1

web/docsを閲覧しましたが、なぜこれが動作しないのかわかりません。HTMLでJSONファイルを使用する:未知の型エラー:data.forEachが関数ではありません

私はJSONファイルからデータ(引用符)を挿入しようとしています:私が得る、

$(document).ready(function() { 
    $("#realquote").on("click", function() { 
    $.getJSON('/json/quotes.json', function(data) { 
    var html = " "; 
     data.forEach(function(val) { 
     var keys = Object.keys(val); 
      html += "<div class = 'text-output'>"; 
      keys.forEach(function(key){ 
       html += val[key]; 

      }); 
       html += "</div>" 
     }); 


     $(".realquote").html(html); 
    }); 
    });   
    }); 

しかし、毎回次のJSを使用して簡単なHTMLのdivの中へ {

"quotesArray":[{ 
    "personName": "Albert Einstein", 
    "quote": "Look deep into nature, and then you will understand everything better." 
}, 
{ 
    "personName": "Stephen Hawking", 
    "quote": "Look deep into nature, and then you will understand everything better." 
}, 
{ 
    "personName": "Confucius", 
    "quote": "Life is really simple, but we insist on making it complicated." 
}]} 

エラー:TypeError:data.forEachは関数ではありません」と私は理由を理解できません。

誰かが正しい方向に私を押し込むことができれば、それは非常に高く評価されるでしょう!

答えて

3

dataは、.forEachメソッドを持たない通常のオブジェクトです。オブジェクトのquotesArrayプロパティを反復処理する必要があります。

data.quotesArray.forEach(fn); 
+0

これは完全に働きました。ご協力いただきありがとうございます!! – Steven

+0

@スティーブンあなたは大歓迎です! – undefined

-1

あなたはあなたがそれぞれのforeachののinsted使用することができます$.each代わりのforEach

+1

...おそらくIE8をサポートする必要があると思います。しかし、これは問題とは無関係であり、修正することはできません。目標を達成していない間にエラーが消えたり変更されたりするだけです。 –

-1

を使用するjQueryの、その優れたを使用しているよう..あなたが実際にdata.quotesArrayを使用する必要があり、このlink

1

をチェックしてみてください反復処理を行う配列にアクセスします。

コールバックのdataには、JSONファイルから返されたオブジェクトが格納されます。プレーンなJavascriptオブジェクトには.forEachメソッドがないので、エラーが発生します。あなたはデータを反復処理したい場合は、あなたが使用することができます

1

使用data.quotesArray.forEach(..代わり

http://js.do/code/100647

data.forEach(..のはObject

Object.keys(data).forEach(function (key) 
{ 

.... 

}); 
関連する問題