字符添加到JSON字符串

时间:2012-05-25 13:32:15

标签: php javascript jquery json

我正在使用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;
}

最终,它有效,但我想知道插入的字符来自何处以及是否有办法阻止它们被插入。

1 个答案:

答案 0 :(得分:1)

这可能是字符编码相关的问题。 \ u0000是NULL字符。虽然这可能只是一个巧合,但似乎值得研究。

我认为json的首选字符编码是utf-8。尝试将此添加到您的调用页面的头部,看看它是否解决了问题:

<meta charset="utf-8">

希望有所帮助!