Преобразование объекта JSON в ассоциативный массив - PullRequest
1 голос
/ 02 июня 2011

У меня есть этот массив, который извлекается с помощью json_encode (). Когда я выполняю

$.getJSON('beta.php' , function(data){
    console.log(data);
});

Я получаю результат следующим образом

[
Object { StuId="1", fName="Saman", more...},
Object { StuId="2", fName="Marry", more...},
Object { StuId="3", fName="Navjoth", more...},
Object { StuId="4", fName="Jassu", more...}
]

Я пытаюсь перебрать этот результат, используя

$.each(data, function(key, value){

            for(var key in value){

                if(value.hasOwnProperty(key)){                  

                        $("#article tbody").html(                       
                        "<tr><td>" + value.StuId + 
                        "</td><td>" + value.fName + 
                        "</td><td>" + value.lName +
                        "</td><td>" + value.age +
                        "</td><td>" + value.grade + 
                        "</td></tr>");

                        $("article tbody").appendTo("document.body");               

                }

                }

        });

. Думаю, это невозможно из-за указанного выше формата массива.

Если бы кто-то мог объяснить, почему это происходит и как это исправить, я был бы очень признателен. Я хочу знать, как преобразовать вышеизложенное в следующий формат.

[
{"StuId":"1","fName":"Saman","lName":"Kumara","age":"14","grade":"A"},
{"StuId":"2","fName":"Marry","lName":"Vass","age":"12","grade":"B"},
{"StuId":"3","fName":"Navjoth","lName":"Bogal","age":"32","grade":"A"},
{"StuId":"4","fName":"Jassu","lName":"Singh","age":"22","grade":"E"}
]

Ответы [ 2 ]

2 голосов
/ 02 июня 2011

Каждый раз вы перезаписываете таблицы html разными значениями.

$(document).ready(function() {
  var html = "";
  var data = [
          { StuId:"1", fName:"Saman"},
          { StuId:"2", fName:"Marry"},
          { StuId:"3", fName:"Navjoth"},
          { StuId:"4", fName:"Jassu"}
          ]
  $.each(data, function(key, value){
    console.log(value + "--" + key);
    html += "<div><span>" + value.StuId + "</span><span>" + value.fName + "</span></div>";
  });
  $('body').html(html)
});

Циклы в JavaScript отличаются от других языков.Вам нужны затворы.

Посмотрите здесь:

http://www.mennovanslooten.nl/blog/post/62

0 голосов
/ 02 июня 2011

Базовый объект - это массив javascript, поэтому вы не можете:

$.each(data, function(item) {
    var html = "<tr><td>" + item.StuId + "</td><td>" + item.fname + "</td></tr>";
    // etc.
});

...