【发布时间】:2011-01-22 20:02:00
【问题描述】:
试图弄清楚这一点让我有点头疼。要通过 Ajax 从 PHP 脚本请求一些 json 数据,我使用的是 jQuery 函数:
$.ajax({
type: 'GET',
cache: 'false',
url: ajaxUrl,
data: dataString,
success: updatePage
});
如果我不将 PHP 标头中的 content-type 设置为:
header('Content-type: application/json');
然后我的服务器响应如下:
{"content":"new content"}
并且内容类型自动设置为 text/html。当 jQuery ajax 选项中的 dataType 未设置时,它使用默认的“智能猜测”。我强烈假设 jQuery 将响应数据识别为 json,因为 updatePage 被解析为一个对象。 updatePage 使用 JSON js 库(json2.js),并且这样做:
function updatePage(data) {
$dataObj = JSON.parse(data);
}
当 ajax 成功调用该函数时,一切正常。没有错误。 奇怪的是,如果我像上面一样将header设置为application/json,JSON.parse会突然报错。如果我在 jQuery ajax 请求中将我的 dataType 设置为“json”,则会发生完全相同的错误。更改这些内容时,我从 PHP 脚本得到的响应与上面的完全一样。 Firebug 中的错误如下所示:
JSON.parse
$dataObj = JSON.parse(data);
有点长,抱歉,但如果有人知道出了什么问题,他们的帮助将不胜感激。感谢您的宝贵时间。
【问题讨论】:
-
我不明白(甚至看不到)错误...
-
我建议使用 console.log(data) 转储来自服务器的内容...看看它是否看起来不同。您发布的那个错误不是很有启发性。
-
Dancrumb 呈现: Object { content="content":"new content" } JSON.parse [打破这个错误] $dataObj = JSON.parse(data);也没多大帮助
标签: php jquery ajax json http-headers