2010-02-01 2 views
2

У меня есть простой объект JSON возвращается в видеобъекта Синтаксического JSON в JQuery

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

Как разобрать его в успехе.

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

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

Благодаря

+0

Уточнить - вы используете .html с msg.d.Name или msg.d? – ScottE

+1

Установите firebug для firefox и console.log (msg.d) - чтобы вы могли убедиться, что ваш объект не экранирован методом .net. – ScottE

+0

Вам удалось решить проблему? У меня такая же проблема. – Sankalp

ответ

6

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

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

Это также легко перебирать объект JSON, содержащий несколько строк «» с использованием метода .each Jquery, поскольку в этом примере:

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

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

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

И, наконец, использовать поджигатель в console.log msg.d

+0

Hi ScottE, Я не использую eval, это прокомментированная строка должна избавиться от него, чтобы избежать путаницы. – user424134

1

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

+0

dataType уже установлен в JSON. – user424134

0

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

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

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

и с Jquery документации:

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

+0

У меня есть eval как прокомментированная строка. все еще не смог разобрать его. – user424134

1

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

var data = eval("(" + msg + ")"); 
0
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

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

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

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

Pass accepts header parameter to jquery ajax

Смежные вопросы