JSON.parse在Chrome中不起作用

时间:2011-06-14 00:56:35

标签: php javascript ajax json google-chrome

我有一个奇怪的问题,我无法弄清楚。我太容易出错了。 问题出现在Chrome 12.0.742.91中,但在IE8 8.0.6001.19048中可以正常工作。

这是我的AJAX回调函数,this是XMLHttpRequest实例。

// default AJAX callback handler
function Handler() {

  if (this.readyState == 4 && this.status == 200) {

    // alert(">>"+this.responseText+"<<");
    var Response = this.responseText;
    // Response = '{"Status":0,"Data":"My Data"}';

    document.getElementById("debug").innerHTML = Response;

    var Ajax = JSON.parse(Response);

    document.getElementById("Stat1").innerHTML = Ajax.Status+"<br />"+Ajax.Data;
  }

AJAX服务器正在发送{"Status":0,"Data":"Server Data"},这在debug元素中显示完全相同; Server Data

header('Content-type: application/json');
print '{"Status":0,"Data":"Server Data"}';

警告(...)显示>>{"Status":0,"Data":"Server Data"}<<,JSON数据前面或后面没有多余的空格。

但是当用JSON.parse()解析时,我收到一个javascript错误:非法令牌。

但是,如果我硬编码相同的字符串(激活标记的行),JSON.parse()可以正常工作,并在My Data元素中显示数据(stat1)。

在IE8中,Server Data版本完美无缺......

我是否忽视了一些基本内容,或者Chrome存在已知问题?

[编辑] 根据请求,您将在此处找到XMLHTTPRequest实例创建:

// Create the XMLHttpRequest object
function GetHTTPRequestObject() {

  var httpRequest = null;

  if (window.XMLHttpRequest)  {// code for IE7+, Firefox, Chrome, Opera, Safari
    httpRequest = new XMLHttpRequest();
  } else {// code for IE6, IE5
    httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
  }

  return httpRequest;
}

1 个答案:

答案 0 :(得分:3)

查看this question's answer,它与Unicode BOM有关。