一尘不染

jQuery.getJSON和jQuery.parseJSON返回[object Object]吗?

json

编辑 :我已经用这个问题获得了“著名问题”徽章,所以我想我会回到原来的位置,然后将发生的事情贴在非常尖锐的顶部,以便人们立即搜索得到答案。

基本上,我是JSON的新手。JSON是一个对象(显然),因为它包含各种东西!因此,我就像“嘿,JavaScript,只是弹出带有所有这些JSON数据的警报”,希望它以字符串的形式提供给我JSON数据。但是javascript并不能做到这一点(很好!),所以就像“嘿,这就是我们显示对象的方法,[object
Object]”。

我能做的是类似的东西alert(obj.DATA[0][1]),它将向我展示那部分对象。

我真正想要的是验证我是否制作了良好的JSON数据,可以使用进行检查JSON.stringify

无论如何,请回到我们定期安排的问题!


我正在尝试通过ajax调用获取一些JSON数据,但是jQuery似乎并不喜欢我的JSON。

如果我做类似的事情:

function init2() {
    alert("inside init2");
    jQuery.ajax({
        url: "/Mobile_ReportingChain.cfm",
        type: "POST",
        async: false,
        success: function (data) {
            alert(data);
            var obj = jQuery.parseJSON(data);
            alert(obj);
        }
    });
}

我从alert(data)得到这个:

    {"COLUMNS":["MFIRST_NAME","MLAST_NAME","MMDDL_NAME","MEMPLY_ID","MAIM_NBR","EMPLY_ID"],
    "DATA":[

["FNAME1          ","LNAME1                  ","MI1              ","000-14-7189","026-0010","000-62-7276"]

,["FNAME2           ","LNAME2                    ","MI2              ","000-01-2302","101-1850","000-14-7189"]

,["FNAME3           ","LNAME3                  ","MI3              ","000-91-3619","102-1000","000-01-2302"]

,["FNAME4         ","LNAME4                  ","MI4              ","000-25-9687","102-1000","000-91-3619"]

]}

哪个JSONLint说是有效的json。alert(obj)给了我这个,但是:

[object Object]

添加dataType: "json""text json"使其报告[object Object]alert(data)

我真的很想弄明白这一点,有人知道为什么这样做吗?我是jQuery的新手,我的目标是为每个列获取一个数组。我正在使用的同一代码在不同的页面上工作,这是让我最困扰的地方。


阅读 274

收藏
2020-07-27

共1个答案

一尘不染

alert()功能只能显示文本字符串。作为唯一参数,它采用字符串或对象。
但是,该对象将转换为可以显示的字符串。

通过jQuery提取JSON时,该$.ajax()方法将自动解析JSON并将其转换为JavaScript对象。data因此,您的变量是一个JavaScript对象,而不是您期望的JSON字符串。

由于alert()只能显示字符串,因此在尝试警告data对象时,您的对象将变成其字符串表示形式。JavaScript对象的字符串表示形式为[object Object]

对于调试目的,您可以console.log(data)改用。然后,您可以通过浏览器开发人员工具中的控制台检查对象及其内容。

function init2() {
    jQuery.ajax({
        url: "/Mobile_ReportingChain.cfm",
        type: "POST",
        dataType: "json",
        async: false,
        success: function (data) {
            console.log(data);
        }
    });
}

如果出于某种原因您仍然想警告JSON数据,则必须将data对象转换回JSON字符串。为此,您可以利用JSON.stringify

alert(JSON.stringify(data));
2020-07-27