编辑:我已经获得了这个问题的“著名问题”徽章,所以我想我会回到它,并将发生在我身上的事情贴在人们最尖端的顶部搜索它以立即获得答案。
基本上,我是 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);
}
});
}
我从警报(数据)中得到这个:
{"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"
只会让它在 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));
关于json - jQuery.getJSON 和 jQuery.parseJSON 返回 [object Object]?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9218900/