-1

JSON ファイル内のネストされたデータを取得しようとして問題が発生しています。

誰でも私を助けてもらえますか?メガメニューを作成しようとしています。

$.getJSON("js/nav.json", function (data)  {
    $.each(data.navigation, function (i, navigation)  {
        var jsondata = "<li class='top-level'><a href='/" + this.link + "'>" + this.title + "</a></li>";
        $.each(this.headingArray, function ()  {
            alert(hello);
        });
        $(jsondata).appendTo("ul.nav");
    });
  });
});

そして、これが私が読んでいるサンプルのJSONファイルです

{
    "navigation": [
            {
                    "title": "Home",
                    "link": ""
 },
            {
                    "title": "Find your ski holiday",
                    "link": "#URLhere",
                    "headingArray": [
                            {
                                    "heading": [
                                            {
                                                    "title": "Destinations",
                                                    "link": "#URLhere",
                                                    "subheading": [
                                                            {
                                                                    "title": "Andorra",
                                                                    "link": "#URLhere"
},
                                                            {
                                                                    "title": "Austria",
                                                                    "link": "#URLhere"
},

何か助けていただければ幸いです。

デモ - http://dev.thirstythursdays.co.uk/menu-json3

4

2 に答える 2

1

headingArrayオブジェクトには などのさまざまなプロパティがあるため、subheading反復処理を試みる前に、this.headingArrayそれが定義されているかどうかを確認する必要があります。

したがって、次のようなものを追加します

if (this.headingArray){
    //iterate through this.headingArray
}

デモ: http://jsfiddle.net/Q2Xy4/1/

于 2013-04-22T14:53:27.887 に答える
0

これは、あなたの応答がどのように解析されているかです。

JSON が構造化されているため、配列内のすべての結果要素にheadingArray/subheadingフィールドが含まれているわけではないことに注意してください。

ここに画像の説明を入力

たとえば、JSON 応答配列の最初の要素を見ると、オブジェクトにheadingArrayフィールドが含まれていないことがはっきりとわかります。

{
    "navigation": [
    {
        "title": "Home",
        "link": "" // No headingArray in here...
    }, {
        "title": "Find your ski holiday",
        "link": "#URLhere",
        "headingArray": [
        {

あなたがすべきことは次のとおりです。

  • 同種の要素のみを含むようにjsonを再構築するか、
  • または、値にアクセスする前に、存在しないフィールドをチェックするように解析ロジックを書き直してください。
于 2013-04-22T14:59:45.280 に答える