【问题标题】:Decode JSON with jQuery / AJAX使用 jQuery / AJAX 解码 JSON
【发布时间】:2012-06-16 15:01:36
【问题描述】:

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

"{"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);
        });
    },
});

警报中一直显示未定义(但我收到了正确的 JSON)。知道我做错了什么吗?

【问题讨论】:

  • 这是服务器返回的实际 json 吗?此外,倒数第二行还有一个额外的逗号。
  • 如果您收到您在 json 周围加上的引号,则无法解析。
  • 这是服务器返回的 exact JSON 吗?因为它是无效的。
  • @dystroy 我的印象是你可以用引号解析 JSON,你只需要调用 JSON.parse(stringified_version);
  • 我遇到了类似的问题 - JSON 响应没有被翻译成 JS 对象。原因很简单:我写的是datatype而不是dataType......所以这些东西值得检查。

标签: jquery ajax json decode


【解决方案1】:
{"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)
    });
});

【讨论】:

    【解决方案2】:

    contentType 是发送服务器的数据的类型,而不是来自。删除它。

    您在问题中包含的 JSON。那是服务器返回的 exact JSON 吗?因为如果是,您就不需要$.each。你有一个对象,你应该只需要$.each 来循环一个对象数组。

    所以,试试alert(msg.TotalClass)

    另外,那个 JSON 是无效的。在TotalCountGrade 之后有一个额外的,。另外,John 应该用双引号括起来。

    【讨论】:

      【解决方案3】:

      试着提醒一下

      $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"
      }
      

      【讨论】:

        猜你喜欢
        • 2021-03-13
        • 2012-02-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-03-31
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多