基本上,我是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","000-91-3619"] ]}
哪个JSONLint说是有效的json。然而,alert(obj)给了我这个:
[object Object]
添加dataType:“json”或“text json”只是使其在alert(数据)上报告[object Object]。
我真的很想弄清楚,有人知道为什么这样做吗?我在jQuery中很新,我的目标是为每个列获取一个数组。我使用的相同的代码在不同的页面上工作,这是最令我困扰的。
alert()
功能只能显示一串文字。作为其唯一的参数,它需要一个字符串或一个对象。然而,对象将被转换为可以显示的字符串。
通过jQuery获取JSON时,$ .ajax()方法将自动解析JSON并将其转换为JavaScript对象。你的数据变量是一个JavaScript对象,而不是一个可能期望的JSON字符串。
由于alert()只能显示字符串,当尝试提醒您的数据对象时,您的对象将变为其字符串表示形式。 JavaScript对象的字符串表示形式为[object Object]。
为了进行调试,您可以使用console.log(数据)。然后,您可以通过浏览器开发人员工具中的控制台检查对象及其内容。
function init2() { jQuery.ajax({ url: "/Mobile_ReportingChain.cfm",dataType: "json",success: function (data) { console.log(data); } }); }
如果由于某种原因仍然希望提醒JSON数据,那么您必须将数据对象转回JSON字符串。要做到这一点,可以使用JSON.stringify
:
alert(JSON.stringify(data));