【发布时间】:2016-01-29 12:34:21
【问题描述】:
我有一个非常独特的问题;在通过 xmlhttprequest 从 PHP 传递之后,我将 JSON 字符串解析回对象数组。我的 Web 应用程序使用几个不同的 sqlsrv_query 的结果反复执行此操作,但特别是一个查询变得非常有问题:id 值不一致。我的意思是,如果我在解析之前输出 JSON 字符串,则 id 值是一个 int,但在 JSON 解析之后它是未定义的。其余的值都很好,它只是 id(这是唯一的 int)。此外,在解析后,如果我将对象转换回 JSON 字符串,则恢复 int 值。如果我尝试像“object.prop”那样调用该属性,它会返回未定义。我已经检查,仔细检查和三重检查,没有错别字。我已经 console.logged 整个对象数组(在整个执行过程中的不同点)具有相同的结果。我在 SO、google 或 here 上找不到任何可以解释这种行为的东西,你可以吗?
这里有一些代码sn-ps。
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
为了阻止巨魔,让我重申一下我对这个场景的测试程度:
在 Chrome 和 IE11 中产生相同的结果。我尝试对多个不同的记录执行相同的查询,但发生了同样的事情。返回 int 和字符串混合的大量其他查询(不同的查询)没有这个问题。我曾尝试关闭浏览器并重新打开,以防出现某种奇怪的临时异常。
我以前从未在这里发过帖子,因为我几乎总能通过一些研究找到问题的答案,但这超出了我的解决能力,所以我求助于 SO 的好人寻求帮助、任何解决方案、见解或将不胜感激在哪里寻找答案的想法。
【问题讨论】:
-
所以我采纳了您的建议并尝试重现该问题,但无法获得相同的结果,即使使用应用程序中使用的相同类,所以它必须是我忽略的网络应用程序中的某些内容,但这仍然令人困惑,因为我可以看到 json 字符串中的值,但在解析时却看不到。不幸的是,我无法在我的开发环境之外重现它,所以我想我只需要记下这个问题。
-
确实,如果我们无法重现您的问题,人们将很难为您提供帮助……祝您好运! :-)
-
已经有同样的问题,头疼得厉害:S
标签: javascript php json parsing xmlhttprequest