【问题标题】:Parsing JSON object in JQuery在 JQuery 中解析 JSON 对象
【发布时间】:2010-02-01 15:22:39
【问题描述】:

我在表单中返回了简单的 JSON 对象

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

如何成功解析它。

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

上面的代码不显示名称,但是当我通过 $('#something').html(msg.d);
它显示了完整的 JSON 字符串。如何访问各个属性

谢谢

【问题讨论】:

  • 澄清 - 您是在使用带有 msg.d.Name 或 msg.d 的 .html 吗?
  • 为 firefox 和 console.log(msg.d) 安装 firebug - 这样您就可以确保您的对象没有被 .net 方法转义。
  • 您解决了这个问题吗?我也遇到了同样的问题。

标签: jquery wcf json


【解决方案1】:

您不需要评估 - 只需使用 d.Name

(假设 d 是来自 msg.d 的变量)

使用 jquery 的 .each 方法迭代包含多个“行”的 json 对象也很容易,如下例所示:

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

并确保您已设置:

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

最后,使用 firebug 来 console.log msg.d

【讨论】:

  • 嗨 ScottE,我没有使用 eval,这是一个注释行,应该去掉它以避免混淆。
【解决方案2】:

如果你使用ajax(),你可以设置dataType属性来获取JSON数据。 Manual

【讨论】:

    【解决方案3】:

    如果你真的想评估它,方法如下:

    var data = eval("(" + msg + ")");
    

    【讨论】:

      【解决方案4】:

      jQuery 从 1.4 开始有特殊的解析 json 的方法,从这个版本开始,这个不是使用 eval 而是使用原生解析器。

      看这里:

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

      来自 jQuery 文档:

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

      【讨论】:

      • 我有 eval 作为注释行.. 很抱歉上面的混乱。仍然无法解析。
      【解决方案5】:
      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);
      
      }
      

      【讨论】:

        【解决方案6】:

        将 Accepts 标头与 ContentType 一起注入。这将通知服务它需要 JSON 格式的响应,而不是纯文本格式的响应。

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

        您可以查找有关如何使用 jQuery AJAX 处理此请求标头的示例。

        Pass accepts header parameter to jquery ajax

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2017-09-03
          • 2021-03-19
          • 2017-07-14
          • 1970-01-01
          • 2013-03-22
          • 1970-01-01
          • 2020-05-08
          相关资源
          最近更新 更多