编辑 :我已经用这个问题获得了“著名问题”徽章,所以我想我会回到原来的位置,然后将发生的事情贴在非常尖锐的顶部,以便人们立即搜索得到答案。
基本上,我是JSON的新手。JSON是一个对象(显然),因为它包含各种东西!因此,我就像“嘿,JavaScript,只是弹出带有所有这些JSON数据的警报”,希望它以字符串的形式提供给我JSON数据。但是javascript并不能做到这一点(很好!),所以就像“嘿,这就是我们显示对象的方法,[object Object]”。
我能做的是类似的东西alert(obj.DATA[0][1]),它将向我展示那部分对象。
alert(obj.DATA[0][1])
我真正想要的是验证我是否制作了良好的JSON数据,可以使用进行检查JSON.stringify。
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)。
dataType: "json"
"text json"
alert(data)
我真的很想弄明白这一点,有人知道为什么这样做吗?我是jQuery的新手,我的目标是为每个列获取一个数组。我正在使用的同一代码在不同的页面上工作,这是让我最困扰的地方。
该alert()功能只能显示文本字符串。作为唯一参数,它采用字符串或对象。 但是,该对象将转换为可以显示的字符串。
alert()
通过jQuery提取JSON时,该$.ajax()方法将自动解析JSON并将其转换为JavaScript对象。data因此,您的变量是一个JavaScript对象,而不是您期望的JSON字符串。
$.ajax()
data
由于alert()只能显示字符串,因此在尝试警告data对象时,您的对象将变成其字符串表示形式。JavaScript对象的字符串表示形式为[object Object]。
对于调试目的,您可以console.log(data)改用。然后,您可以通过浏览器开发人员工具中的控制台检查对象及其内容。
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));