0

私はJSONとjQueryにかなり慣れていないので、次のコードでロードできなかったオブジェクトを反復処理するのに苦労しています:

$.ajax({
    url: source,
    dataType: 'json',
    success: function(obj) {
        // Laat een succes-melding zien wanneer de data goed ingeladen is
        console.log("SUCCESS");
    },
    error: function(obj) {
        // Laat een error-melding zien wanneer de data niet goed ingeladen is
        alert("ERROR");
    },
    complete: function(obj) {
        console.log(obj);           
    }
});

残念ながら、JSON の構造は私の好みでは少し複雑ですが、(YQL を介した) 外部ソースであるため、これについては何も変更できません。

{
  "query": {
    "count": 1,
   "created": "2013-06-21T11:42:57Z",
    "lang": "en-US",
    "diagnostics": {
      "publiclyCallable": "true",
      "url": {
        "execution-start-time": "1",
        "execution-stop-time": "1868",
        "execution-time": "1867",
        "proxy": "DEFAULT",
        "content": "contentsource"
      },
      "user-time": "1868",
      "service-time": "1867",
      "build-version": "37740"
    },
    "results": {
      "viewentries": {
        "toplevelentries": "0",
        "viewentry": [
          {
            "date": "2013-06-11",
            "noteid": "A2FA",
            "position": "1",
            "siblings": "0",
            "unid": "15D7F7A15C0DAE",
            "entrydata": [
              {
                "columnnumber": "0",
                "name": "Datum_van_instantie",
                "text": "2013-06-11"
              },
              {
                "columnnumber": "1",
                "name": "kopregel",
                "text": "Title of newsitem 1"
              },
              {
                "columnnumber": "2",
                "name": "tussenkopje",
                "text": "Introduction text of newsitem 1"
              },
              {
                "columnnumber": "3",
                "name": "broodtekst",
                "text": "Content of newsitem 1"
              },
              {
                "columnnumber": "4",
                "name": "imagetag",
                "text": "Image URL of newsitem 1"
              }
            ]
          },
          {
            "date": "2013-05-29",
            "noteid": "A2F6",
            "position": "2",
            "siblings": "0",
            "unid": "9237CD3822ED8DD",
            "entrydata": [
              {
                "columnnumber": "0",
                "name": "Datum_van_instantie",
                "text": "2013-05-29"
              },
              {
                "columnnumber": "1",
                "name": "kopregel",
                "text": "Title of newsitem 2"
              },
              {
                "columnnumber": "2",
                "name": "tussenkopje",
                "text": "Introduction text of newsitem 2"
              },
              {
                "columnnumber": "3",
                "name": "broodtekst",
                "text": "Content of newsitem 2"
              },
              {
                "columnnumber": "4",
                "name": "imagetag",
                "text": "Image URL of newsitem 2"
              }
            ]
          }
        ]
      }
   }
  }
}

私が達成したいことは、次のようなものを HTML ファイルの要素に出力することです。

Title of newsitem 1
Title of newsitem 2

それ以降は、ファイルから残りのアイテムを抽出しても問題ないと確信しています。私が試していることは意味があり、さまざまな obj.viewentry[0] 代替で $.each ループを使用すると、未定義のエラーが発生します。より具体的な例にアクセスしようとすると

$.each(obj.viewentry, function(index, value) {
    console.log(this.entrydata[0]);             
});

私が得るリターンはjQueryエラー、TypeError: e is undefinedです。最後のコードは「jQuery for Dummies」すぎると確信していますが、今朝探していた他の回答では、これ以上明確にはなりませんでした。

4

2 に答える 2

0

これにjQueryを使用する理由はありません(ajax部分を除く):

for (var viewEntryKey in obj.query.results.viewentries.viewentry) {
    for (var i = 0; i < obj.query.results.viewentries.viewentry[viewEntryKey].entrydata.length; i++) {
        if (obj.query.results.viewentries.viewentry[viewEntryKey].entrydata[i].name == 'kopregel') {
            console.log(obj.query.results.viewentries.viewentry[viewEntryKey].entrydata[i].text);
        }
    }
}

出力:

ニュースサイトのタイトル 1 ニュースサイト
のタイトル 2

于 2013-06-21T12:04:18.607 に答える
0

これを使用してみてください:

$.each(obj.query.results.viewentries.viewentry, function (index, value){
    $.each(value.entrydata, function (index, value) {
        if (value.name == "kopregel") console.log(value.text);
    });
});

ここで動作しています: http://jsfiddle.net/8tKYd/2/

于 2013-06-21T12:02:56.573 に答える