如何摆脱Firefox中的JSON错误

时间:2013-08-26 06:41:48

标签: php javascript ajax json firefox

我的回复标题是

Access-Control-Allow-Meth...    GET, POST
Access-Control-Allow-Orig...    *
Cache-Control   no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Connection  Keep-Alive
Content-Length  81
Content-Type    text/html
Date    Mon, 26 Aug 2013 06:35:53 GMT
Expires Thu, 19 Nov 1981 08:52:00 GMT
Keep-Alive  timeout=5, max=99
Pragma  no-cache
Server  Apache/2.4.3 (Win32) OpenSSL/1.0.1c PHP/5.4.7
X-Powered-By    PHP/5.4.7`

请求标头

Accept  application/json, text/javascript, */*; q=0.01
Accept-Encoding gzip, deflate
Accept-Language en-US,en;q=0.5
Cache-Control   no-cache
Connection  keep-alive
Content-Length  31
Content-Type    application/x-www-form-urlencoded; charset=UTF-8
Cookie  USERNAMEEMAIL=shan%40atlos.com; PHPSESSID=8asm46iltcqc9oahsbaaap1c16
Host    localhost
Pragma  no-cache
Referer http://localhost/test/
User-Agent  Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0
X-Requested-With    XMLHttpRequest`

我在firefox中遇到错误“Not Well Formed”这是什么问题。 我正在以json形式正确获取数据,但它也显示非常烦人的错误

用于发出请求的Java脚本代码 GetTopNotification 并使用一个类来生成Ajax请求 Workspace

1 个答案:

答案 0 :(得分:0)

您的响应标头不正确。

if(headers_sent()) die('Should not output data before json');
header('Content-type: application/json');
echo json_encode($data_for_json);
exit;

此外,在json之前不应发送任何内容,也不得在此之后发送任何内容。


回应以下评论:

你的php代码中的某个地方你正在输出json。但是,如上所述,您的响应标头不正确:Content-type部分应设置为application/json;上面的代码就是这么做的。逐行走路:

  1. 检查您是否已经发送任何内容并且如果您确实已经死亡
  2. 将响应标头的Content-type部分设置为适当的mime-type
  3. 输出json(目前正好,应该没问题)
  4. 退出;

  5. 更新更新irt评论

    你手动创建你的json字符串:我可以全心全意地建议,使用数组或对象,然后使用json_encode创建你的json。 我还在你的代码上添加了output_buffering,以防万一。

    试一试,新代码为here


    更新三个

    在work-space.js中替换此行

    self.responseValue = self.getValueFromResponse( jqXHR );
    

    有了这个

    if(type != 'xml') self.responseValue = data;
    else self.responseValue = self.getValueFromResponse( jqXHR );
    

    保存,清除缓存,然后重试。