Разбор объекта JSON в JQuery - PullRequest
       45

Разбор объекта JSON в JQuery

2 голосов
/ 01 февраля 2010

У меня есть простой объект JSON, возвращенный в форме

{"d":"{\"Name\":\"DMX100\",\"Description\":\"blah blah\",\"ID\":\" 780\",\"Make\":\"2010\"}"}

Как мне разобрать это в случае успеха.

success: function(msg)                  
{                     
    $('#something').html(msg.d.Name);   
}

Над кодом не отображается Имя, но когда я передаю $('#something').html(msg.d);
он показывает полную строку JSON. Как мне добраться до отдельных объектов

Спасибо

Ответы [ 6 ]

6 голосов
/ 01 февраля 2010

Вам не нужно eval - просто используйте d.Name

(при условии, что d является переменной из msg.d)

Также легко выполнить итерацию объекта json, который содержит несколько'строки', используя метод jequery .each, как в этом примере:

$.each(msg.d, function() {      
    alert(this.SomeProperty);
});

И убедитесь, что вы установили:

contentType: "application/json; charset=utf-8",
dataType: "json",

И, наконец, используйте firebug для сообщения console.log.д

1 голос
/ 01 февраля 2010

Если вы действительно хотите оценить его, вот как:

var data = eval("(" + msg + ")");
1 голос
/ 01 февраля 2010

Если вы используете ajax(), вы можете установить свойство dataType для получения данных JSON. Руководство

0 голосов
/ 02 декабря 2013

Вставить заголовок Accepts вместе с ContentType. Это уведомит службу о том, что ей нужен ответ в формате JSON, а не как открытый текст.

accepts: "application/json; charset=utf-8"

Вы можете посмотреть примеры того, как есть этот заголовок запроса, используя jQuery AJAX.

Pass принимает параметр заголовка для jquery ajax

0 голосов
/ 18 марта 2010
success: function(msg)
{
  injectHtml(msg.d);
}

function injectHtml(json) 
{
    //Get data from json
    var data = jQuery.parseJSON(json);
    var Name = Description = ID = Make = '';

    $.each(data, function() {
        Name = this.Name;
        Description = this.Description
        ID = this.ID;
        Make = this.Make;
    });

    //Inject 
    $('#something').html(Name);

}
0 голосов
/ 01 февраля 2010

jQuery, так как в 1.4 есть специальный метод для анализа json, и в этой версии он использует не eval, а собственный анализатор.

Взгляните сюда:

http://yehudakatz.com/2010/01/15/jquery-1-4-and-malformed-json/

и из документации по jQuery:

http://api.jquery.com/jQuery.parseJSON/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...