Javascript JSON解析对象,一个对象属性未定义,抛出没有错误

时间:2015-10-29 11:30:18

标签: javascript php json parsing xmlhttprequest

我有一个非常独特的问题;在通过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的优秀人才,寻求帮助,任何解决方案,见解或非常感谢在哪里寻找答案的想法。

1 个答案:

答案 0 :(得分:1)

它采用有效的json格式。尝试使用JSON.parse()

解析它
if(result1.search('<br') === -1) {
      this.result = JSON.parse(result1);

} else {
     console.log(JSON.parse(result1));
}