2

誰かがJQueryでJSONを取得するのを手伝ってくれますか? JQuery コードに間違いがあると思います。どんな助けでも大歓迎です。以下は私のJSONとJQueryです:

JSON:

{
    "video": [
        {
            "id": "12312412312",
            "name": "Ecuaciones Diferenciales",
            "url": "/video/math/edo/12312412312",
            "author": {
                "data": [
                    {
                        "name_author": "Alejandro Morales",
                        "uri": "/author/alejandro-morales",
                        "type": "master"
                    }
                ]
            },
            "comments": {
                "data": [
                    {
                        "id": "367501354973_12216733",
                        "from": {
                            "name": "Doug Edwards",
                            "id": "628675309"
                        },
                        "message": "Make sure you don't, as they say, go whole hog...\nhttp://www.youtube.com/watch?v=U4wTFuaV8VQ",
                        "created_time": "2010-03-06T03:24:46+0000"
                    },
                    {
                        "id": "367501354973_12249673",
                        "from": {
                            "name": "Tom Taylor",
                            "id": "1249191863"
                        },
                        "message": "Are you and Karen gonna, as they say, pig out?",
                        "created_time": "2010-03-06T21:05:21+0000"
                    },
                    {
                        "id": "367501354973_12249857",
                        "from": {
                            "name": "Sheila Taylor",
                            "id": "1315606682"
                        },
                        "message": "how did it turn out? Sounds nummy!\n",
                        "created_time": "2010-03-06T21:10:30+0000"
                    }
                ]
            }
        },
        {
            "id": "12312412311",
            "name": "Ecuaciones Diferenciales : El arte de las diferenciaciones",
            "url": "/video/math/edo/1231241231212",
            "author": {
                "data": [
                    {
                        "name_author": "Alejandro Morales",
                        "uri": "/author/alejandro-morales",
                        "type": "master"
                    }
                ]
            },
            "comments": {
                "data": [
                    {
                        "id": "367501354973_12216733",
                        "from": {
                            "name": "Doug Edwards",
                            "id": "628675309"
                        },
                        "message": "Make sure you don't, as they say, go whole hog...\nhttp://www.youtube.com/watch?v=U4wTFuaV8VQ",
                        "created_time": "2010-03-06T03:24:46+0000"
                    },
                    {
                        "id": "367501354973_12249673",
                        "from": {
                            "name": "Tom Taylor",
                            "id": "1249191863"
                        },
                        "message": "Are you and Karen gonna, as they say, pig out?",
                        "created_time": "2010-03-06T21:05:21+0000"
                    },
                    {
                        "id": "367501354973_12249857",
                        "from": {
                            "name": "Sheila Taylor",
                            "id": "1315606682"
                        },
                        "message": "how did it turn out? Sounds nummy!\n",
                        "created_time": "2010-03-06T21:10:30+0000"
                    }
                ]
            }
        }
    ]
}

jQueryコード

var url = 'result.json';
$(document).ready(function() {
    $.getJSON(url, function(data) {
        $.each(data, function(video, data) {
            $('#stage').html('<p> ID:' + data.video + '</p>');
            $('#stage').append('<p Name: ' + data.name+ '</p>');
            $('#stage').append('<p> URL: ' + data.url+ '</p>');

            console.log("========================");
            console.log(data);

        });
    });
});
4

3 に答える 3

4

JSON オブジェクト全体を反復処理しようとしています。代わりに、そのキーの 1 つを反復処理する必要があります。これを試して:

$.each(data.video, function(index, video) {
  $('#stage').append('<p> Name: ' + video.name+ '</p>');
  $('#stage').append('<p> URL: ' + video.url+ '</p>');
});

さらにデータを追加する場合は、階層全体をトラバースできます。例えば:

$.each(data.video, function(index, video) {
  $('#stage').append('<p> Name: ' + video.name + '</p>');
  $('#stage').append('<p> URL: ' + video.url + '</p>');

  $.each(video.author.data, function(index, author) {
    $('#stage').append('<p> Author: ' + author.name_author + '</p>');
  });

  $('#stage').append('<br/>');
});

最後に、上記の構文を使用して n 番目のレコードにアクセスする場合は、次のようにします。

// n is the 0-based position of the json record you're interested in displaying
var video = data.video[n];
$('#stage').append('<p> Name: ' + video.name + '</p>');
$('#stage').append('<p> URL: ' + video.url + '</p>');
// etc...

ここでの作業例: http://livecoding.io/3495017

于 2012-08-28T04:47:39.647 に答える
4

ループ内で、およびプロパティにアクセスしようとしていることを考えると、オブジェクトのプロパティである配列内の各項目をループしようとしている と思います。したがって、代わりに:videodata$.each().video.name.url

 $.each(data, function(video, data) {

...の各最上位プロパティをループしていますdata。試してください:

 $.each(data.video, function(video, data) {

data.video...配列内のアイテムだけをループします。

また、そのコールバックの 2 つのパラメーターが現在のアイテム インデックスと現在のアイテムであることを考えると、おそらくパラメーターの名前を fromvideodatatoiとに変更しますitem。異なる変数を両方とも呼び出すのは少し混乱dataします (1 つは$.getJSON()コールバックのパラメーターで、もう 1 つはコールバックのパラメーターです$.each())。

于 2012-08-28T04:39:16.813 に答える
1

JSON の間違った部分を繰り返し処理しようとしているようです。$.each 行は次のようになります。

$.each(data.video, function(index, video){
  // video.name, video.url, etc
}
于 2012-08-28T04:39:56.753 に答える