我正在使用jQuery.parseJSON()
来解析来自jQuery.ajax()
调用PHP脚本的响应。
代码工作,但在某些服务器上,在响应字符串的开头插入了字符0000
,导致jQuery.parseJSON()
失败。
我无法想象这些角色是如何被插入的,任何想法? 在回应响应之前,字符不在PHP编码的字符串中。
以下是该方案:
PHP脚本使用:
创建JSON字符串$html = json_encode(myArrayOfValues);
echo $html
jQuery.ajax接收编码字符串:
....success: function(html, textStatus){
var response = jQuery.parseJSON(html);
....
要修复问题,我添加了删除插入字符并更改的功能:
var response = jQuery.parseJSON(html);
到:
var response = parseJSONResponse(html);
其中:
function parseJSONResponse(html){
var foundChar = html.indexOf("{");
if(foundChar > 0 ){
html = html.substring(foundChar);
}
var response = jQuery.parseJSON(html);
return response;
}
最终,它有效,但我想知道插入的字符来自何处以及是否有办法阻止它们被插入。
答案 0 :(得分:1)
这可能是字符编码相关的问题。 \ u0000是NULL字符。虽然这可能只是一个巧合,但似乎值得研究。
我认为json的首选字符编码是utf-8。尝试将此添加到您的调用页面的头部,看看它是否解决了问题:
<meta charset="utf-8">
希望有所帮助!