Декодировать JSON с помощью jQuery / AJAX
Я пытаюсь декодировать JSON с помощью jQuery. Вот что я получаю (например, класс, здесь с одним студентом):
"{"Students":[{"Name":John,"Grade":17,}],"TotalClass":17,"TotalCount":1,}"
вот что я делаю:
$j.ajax({
type: 'POST',
url: 'class.aspx/getClass',
contentType: 'application/json; charset=utf-8',
dataType: 'json',
success: function (msg) {
$j.each(msg, function (index, element) {
alert(element.TotalClass);
});
},
});
он продолжает говорить undefined в предупреждении (но я получаю правильный JSON). Есть идеи, что я делаю не так?
3 ответов
{"Students":[{"Name":John,"Grade":17,}],"TotalClass":17,"TotalCount":1,}
недействителен JSON !
если у вас есть действительный JSON
такой
{
"Students": [
{
"Name": "John",
"Grade": "17"
}
],
"TotalClass": " 17",
"TotalCount": "1"
}
вы можете получить доступ к значениям, как это
alert("TotalClass : "+msg.TotalClass);
//loop thru students
$.each(msg.Students,function(index,item){
alert(item.Name+ " - "+item.Grade)
});
работая образец:http://jsfiddle.net/ncbLF/5/
использовать jsonlint для проверки JSON
таким образом, ваш код можно упростить до
$.getJSON("class.aspx/getClass",function(msg){
alert("TotalClass : "+msg.TotalClass);
$.each(msg.Students,function(index,item){
alert(item.Name+ " - "+item.Grade)
});
});
contentType
- тип отправленных данных to сервера, а не от. Удалить.
JSON, который вы включили в вопрос. Это и есть точно JSON сервер возвращается? Потому что, если это так, вам не нужно $.each
. У вас есть объект, вам нужно только $.each
для цикла через массив объектов.
так, просто попробовать alert(msg.TotalClass)
.
кроме того, этот JSON недействителен. У вас есть дополнительный ,
после TotalCount
, и после Grade
. Кроме того,John
должен быть в двойных кавычках.
просто пытаюсь предупредить
$j.each(msg, function (key, element) {
alert(key); // output: Students, TotalClass..
alert(element); //output: [{"Name":John,"Grade":17,}, 17..
});
Примечание
как вы установите dataType: 'json'
поэтому я думаю, что вам не нужно никаких дополнительных усилий по разбору, и, учитывая, что у JSON есть ошибка, не знаю, написана ли она или первоначально отправлена с сервера.
и вам не нужна строка
contentType: 'application/json; charset=utf-8',
вы действительный json должен выглядеть так:
{
"Students": [
{
"Name": "John",
"Grade": "17"
}
],
"TotalClass": " 17",
"TotalCount": "1"
}