2012-05-25 216 views
1

我使用jQuery.parseJSON()来解析来自jQuery.ajax()调用PHP脚本的响应。 代码的工作原理除了某些服务器上的字符0000被插入到响应字符串的开头,导致jQuery.parseJSON()失败。将字符添加到JSON字符串

我不知道这些角色是如何插入的,有什么想法? 这些字符在回显响应之前不在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

请阅读[如何编辑问题和答案帮助指南](http://stackoverflow.com/editing-help)。 – gdoron

+0

Dammit Felix,你今天编辑很快。 :) –

+2

在文件中是否有其他'echo's?你在使用服务器端框架吗?你使用什么服务器? –

回答

1

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

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

<meta charset="utf-8"> 

希望帮助!

+0

字符编码是utf-8 – mwf