【问题标题】:jQuery.parseJSON not working on Ajax SuccessjQuery.parseJSON 在 Ajax 成功上不起作用
【发布时间】:2015-01-18 19:58:09
【问题描述】:

我正在尝试解析我得到响应的 json 数据,但使用 jQuery.parseJSON 它不起作用。 如果我从 Ajax Success Callback Function 中的注释中删除以下数据,Ajax Success 不起作用

$(document).ready(function(){
    //Working Example in Comment
    //var obj = jQuery.parseJSON( '{ "name": "harsh","address":["add1","add2"] }' );
    //var objArray = obj.address;
    //alert(objArray[2]);

    $('#getData').click(function(){
            $.ajax({
                url:'JsonServlet',
                type:'post',
                dataType: 'json',
                success: function(data) {
                    //var JSONdata = jQuery.parseJSON(data);
                    //alert(JSONdata);

                    $('#name').val(data.name);
                    $('#email').val(data.email);
                    $("#add").val(data.innerJSONObj1.address);
                }
            });
    });
});

【问题讨论】:

  • 由于您已将数据类型指定为'json',因此您不应解析数据。在调用success 回调之前已经解析过了。
  • “不工作”是什么意思? data 的值是多少? dataalert(typeof data))的数据类型是什么?成功函数中未注释的三个语句是否可以按原样使用代码?

标签: javascript jquery ajax json


【解决方案1】:

由于你指定了dataType: 'json',所以data变量已经是一个json对象了。

http://api.jquery.com/jquery.ajax/

如果指定了 json,则使用 jQuery.parseJSON 解析响应,然后将其作为对象传递给成功处理程序。解析后的 JSON 对象可通过 jqXHR 对象的 responseJSON 属性获得。

【讨论】:

  • “数据变量已经是一个 json”——不,它不是。 JSON 是数据格式。鉴于该代码,它应该已将 JSON 转换为 JavaScript 对象。
  • @Quentin 我错过了“对象”这个词,但你知道我的意思。
  • 它不是 JSON 对象。它不是 JSON。它是一个包含 JSON 的字符串。然后它被解析了。这把它变成了一个 JavaScript 对象。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-10
  • 2014-01-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多