-1

我的响应标题是

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“格式不正确”中遇到错误,这是什么问题。我以 json 格式正确获取数据,但它也显示非常烦人的错误

发出请求 GetTopNotification 并使用类发出 Ajax 请求的 Java 脚本代码是 工作区

4

1 回答 1

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 类型
  3. 输出json(目前应该没问题)
  4. 出口;

更多更新 irt 评论

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

试试看,新代码在这里


更新三

在 work-space.js 替换这一行

self.responseValue = self.getValueFromResponse( jqXHR );

有了这个

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

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

于 2013-08-26T06:51:13.550 回答