Как перебрать все элементы json с помощью jquery? - PullRequest
1 голос
/ 07 декабря 2011

Это файл json, с которым я работаю

?(
{
    "title":"1",
    "description":"description",
    "site":"site",
    "image_s":"/Becki.jpg",
    "image_l":"aurel"
},
{
    "title":"2",
    "description":"2",
    "site":"1",
    "image_s":"8.jpg",
    "image_l":"aurel"
})

Знак вопроса заменяется динамическим числом для преодоления междоменных ограничений. И я думаю, что именно поэтому у меня проблемы

Я пытаюсь получить оба изображения, но я могу только прочитать данные первого элемента (если это правильное слово):

$.getJSON(surl,  function(data) {
        $.each(data, function(tete, i){
            $.each(data, function(tete, i){
                    $("<div>").addClass("box").append(
                        $("<img/>").attr("src", [this]))
                        ).appendTo("#showdata");
            });

        })
   }); 

Я знаю, что с $("<img/>").attr("src", [this])) что-то не так, но это не проблема. Проблема в том, что вышеприведенный цикл получает только содержимое первого элемента (заголовок: 1 до конца, а не заголовок: 2)

Я думаю, что если бы вопросительный знак не был динамическим, я мог бы сделать цикл оттуда и получить его дочерние элементы, но я не знаю, как это сделать в этом случае

И если вам нужно знать, я не могу использовать программирование на стороне сервера для этого конкретного проекта

Можете ли вы чем-нибудь помочь?

Ответы [ 2 ]

2 голосов
/ 07 декабря 2011

Вы должны поместить свои элементы (называемые объектами в JavaScript) в массив:

[
    {
        "title":"1",
        "description":"description",
        "site":"site",
        "image_s":"/Becki.jpg",
        "image_l":"aurel"
    },
    {
        "title":"2",
        "description":"2",
        "site":"1",
        "image_s":"8.jpg",
        "image_l":"aurel"
    }
]

А также поменяйте свой JS:

$.each(data, function(index, item){
       $("<div>").addClass("box")
           .append($("<img/>").attr("src", [item.image_s]))
           .appendTo("#showdata");
});

Пример выполнения показан в this JSFiddle .

0 голосов
/ 07 декабря 2011

Если вы передаете данные через другой домен, вы, вероятно, используете JSONP. JSONP требует, чтобы сервер возвращал значения, заключенные в функцию; в вашем случае функция представляет собой случайную строку чисел.

Если ваше сообщение верно, вам придется обновить сервер, чтобы он правильно возвращал объект JSON:

В настоящее время он возвращает несколько объектов, обернутых функцией: 235235({one object}, {two object})

Когда он должен возвращать один объект JSON, обернутый функцией: 235235([{first object in array}, {second object in array}])

...