我使用 php 的 json_encode() 将数组转换为 json,然后回显它并从 javascript ajax 请求中读取。
问题是回显的文本具有 javascript json parse() 函数无法转换为的 unicode 字符。
示例数组值为“2\u00000\u00001\u00000\u0000-\u00001\u00000\u0000-\u00000\u00001”,即“2010-10-01”。
Json.parse() 只给我“2”。
有人帮我解决这个问题吗?
示例:
var resArray = JSON.parse(this.responseText);
for(var x=0; x < resArray.length; x++) {
var twt = resArray[x];
alert(twt.date);
break;
}
最佳答案
字符串中有 NUL 字符(字符代码零)。它实际上是"2_0_1_0_-_1_0_-_0_1"
,其中_
代表NUL字符。
unicode 字符转义实际上是 JSON 标准的一部分,因此解析器应该正确处理它。但是,结果仍然是一个包含 NUL 字符的字符串,因此当您尝试在 Javascript 中使用该字符串时,其行为将取决于浏览器对 NUL 字符的处理方式。
您可以在一些不同的浏览器中尝试此操作:
alert('as\u0000df');
Internet Explorer 将仅显示 as
Firefox 将显示 asdf
但 NUL 字符不显示。
最好的解决方案是在将数据转换为 JSON 之前删除 NUL 字符。
关于javascript json - 从 php 解码 ajax json 数组时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4007987/