使用jQuery/AJAX解码JSON

blo*_*lop 7 ajax jquery json decode

我正在尝试使用jQuery解码JSON.这是我得到的(例如一个班级,这里有一个学生):

"{"Students":[{"Name":John,"Grade":17,}],"TotalClass":17,"TotalCount":1,}"
Run Code Online (Sandbox Code Playgroud)

这就是我的所作所为:

$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);
        });
    },
});
Run Code Online (Sandbox Code Playgroud)

它一直在警告中说未定义(但我收到了正确的JSON).知道我做错了什么吗?

Shy*_*yju 8

{"Students":[{"Name":John,"Grade":17,}],"TotalClass":17,"TotalCount":1,}
Run Code Online (Sandbox Code Playgroud)

是无效的JSON!

假设你有一个有效的JSON这样

{
    "Students": [
        {
            "Name": "John",
            "Grade": "17"
        }
    ],
    "TotalClass": " 17",
    "TotalCount": "1"
}
Run Code Online (Sandbox Code Playgroud)

您可以像这样访问这些值

alert("TotalClass : "+msg.TotalClass);
//loop thru students
$.each(msg.Students,function(index,item){
   alert(item.Name+ " - "+item.Grade)
}); 
Run Code Online (Sandbox Code Playgroud)

工作样本: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)
    });
});
Run Code Online (Sandbox Code Playgroud)