Parsing JSON object in JQuery
I have simple JSON object returned in form
{"d":"{\"Name\":\"DMX100\",\"Description\":\"blah blah\",\"ID\":\" 780\",\"Make\":\"2010\"}"}
How do I parse it in success.
success: f开发者_JAVA百科unction(msg)
{
$('#something').html(msg.d.Name);
}
Above code doesnt display Name but when I pass $('#something').html(msg.d);
Thanks
You don't need to eval - just use d.Name
(assuming d is a variable from msg.d)
It's also easy to iterate a json object that contains multiple 'rows' using jquery's .each method, as in this example:
$.each(msg.d, function() {
alert(this.SomeProperty);
});
And make sure you have set:
contentType: "application/json; charset=utf-8",
dataType: "json",
And finally, use firebug to console.log msg.d
If you use ajax()
, you can set the dataType
property to get JSON data. Manual
If you really want to eval it, here's how:
var data = eval("(" + msg + ")");
jQuery since 1.4 has special method to parse json, and from this version this one is not using eval but native parser.
Take a look here:
http://yehudakatz.com/2010/01/15/jquery-1-4-and-malformed-json/
and from jQuery documentation:
http://api.jquery.com/jQuery.parseJSON/
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);
}
Inject the Accepts header along with ContentType. This will notify the service that it needs the response in JSON and not as plaintext.
accepts: "application/json; charset=utf-8"
You can look up examples on how to eat this Request Header using jQuery AJAX.
Pass accepts header parameter to jquery ajax
精彩评论