我有一个非常独特的问题;在通过xmlhttprequest从PHP传递后,我正在将JSON字符串解析回对象数组。我的Web应用程序反复执行此操作,结果是几个不同的sqlsrv_query,但特别是一个查询已成为问题:id值不一致。我的意思是,如果我在解析之前输出JSON字符串,则id值为int,但在JSON解析之后,它是未定义的。其余的值都很好,它只是id(这是唯一的int)。此外,在解析之后,如果我将对象转换回JSON字符串,则会恢复int值。如果我试图像'object.prop'那样调用属性,则返回undefined。我已检查,双重检查,并三重检查没有拼写错误。我有控制台。记录整个对象数组(在整个执行过程中的各个点),结果相同。我可以在SO,谷歌或here上找不到可以解释这种行为的内容,是吗?
以下是一些代码段。
在xmlhttprequest回调函数中:
var result1 = decodeURIComponent(xmlhttp.responseText);
console.log(result1); <-- * SEE OUTPUT BELOW *
if(result1.search('<br') === -1) {
this.result = JSON.parse(result1);
} else {
console.log(result1);
}
output: [{"sheet_id":4054,"o_number":1,"o_description"...
解析后,对象将传递给另一个对象:
if(!result) {
//var error = new ErrorLog();
} else {
console.log(result); <-- * SEE OUTPUT BELOW *
output: [Object, Object, Object, Object, Object]
0: Object
prop1: someValue
prop2: someOtherValue
...
sheet_id: undefined
为了让Trolls保持警惕,让我重申我在多大程度上测试了这种情况:
在Chrome和IE11中产生了相同的结果。我已经尝试对多个不同的记录执行相同的查询,但同样的事情发生了。返回int和字符串混合的众多其他查询(不同的查询)没有这个问题。我试过关闭浏览器并重新打开以防万一它是某种奇怪的临时异常。
我以前从未在这里发帖,因为我几乎总能通过一些研究找到问题的答案,但这超出了我的解决能力,所以我求助于SO的优秀人才,寻求帮助,任何解决方案,见解或非常感谢在哪里寻找答案的想法。
答案 0 :(得分:1)
它采用有效的json格式。尝试使用JSON.parse()
if(result1.search('<br') === -1) {
this.result = JSON.parse(result1);
} else {
console.log(JSON.parse(result1));
}