1

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

最终,它可以工作,但我想知道插入的字符来自哪里,以及是否有办法阻止它们被插入。

4

1 回答 1

1

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

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

<meta charset="utf-8">

希望有帮助!

于 2012-05-25T13:38:54.943 回答