当前位置: 首页 > 面试题库 >

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

朱建弼
2023-03-14
问题内容

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

基本上,我是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的新手,我的目标是为每个列获取一个数组。我正在使用的同一代码在不同的页面上工作,这是让我最困扰的地方。


问题答案:

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));


 类似资料:
  • 问题内容: 这实际上有什么区别? 这工作正常: 但以下操作无效: 这是为什么? 问题答案: 那是因为双引号被认为是标准的,而单引号却没有。这并不是真正针对JQuery,而是关于JSON标准。因此,无论使用JS工具包,您都应该期待相同的行为。 值可以是带双引号的字符串,也可以是数字,也可以是true或false或null,或者是对象或数组。这些结构可以嵌套。

  • 描述 (Description) jQuery.getJSON( url, [data], [callback] )方法使用GET HTTP请求从服务器加载JSON数据。 该方法返回XMLHttpRequest对象。 语法 (Syntax) 以下是使用此方法的简单语法 - <i>$</i>.getJSON( url, [data], [callback] ) 参数 (Parameters) 以下

  • 问题内容: 有人可以向我解释为什么返回类型 只是返回类型 我不明白为什么地图会映射到一个以上的值。TIA。 问题答案: 它返回具有 相同 名称的控件的所有参数值。 例如: 要么 任何选中/选择的值都将以以下形式出现: 对于表中的多个选择它也很有用: 与…结合

  • 我必须编写一个程序,其中方法返回读取的正数之和,并将从用户那里读取输入,直到输入零。 到目前为止,我没有计算正数的总和,我需要一些帮助,请。 以下是我目前掌握的情况: (请注意,您得到了扫描程序,不要使用system.in)-从用户读取,直到给定0,并返回读取的正数的和。 示例: ♦用户输入:0=>返回0 ♦用户输入1 2 3 0=>返回6(1+2+3) ♦用户输入1-2 3 0=>返回6(1+3

  • 问题内容: 例如我有一个功能: 我怎样才能返回AJAX后得到的? 问题答案: 因为请求是异步的,所以您无法返回ajax请求的结果(而同步ajax请求是一个 糟糕的 主意)。 最好的选择是将自己的回调传递给f1 然后,您将像这样致电:

  • 问题内容: 如何使用JQuery.getJSON()读取当前目录中的文件? 我正在尝试一些简单的操作(将data.json文件与html文件放在同一目录中): 我得到错误: XMLHttpRequest无法加载file:/// C:/Projects/test/data.json。Access-Control-Allow- Origin不允许使用Origin null。 我尝试了各种路径组合,但似