【发布时间】:2011-06-15 03:20:24
【问题描述】:
我遇到了一个奇怪的问题,我正在尝试编写一个 PHP 页面,该页面将一些 JSON 返回到 Jquery AJAX 调用。问题是,尽管将内容类型设置为 application/json,但响应似乎总是包含 HTML 标头。
这是 PHP 代码:
// some code that generates an array
header("Content-type: application/json");
echo json_encode($return);
然后在Javascript中:
$.ajax({
url: '/VAPHP/services/datatable.php',
dataType: 'json',
data:
{
type: 'invoices'
},
success: function(data)
{
// show a message saying it's been sent!
alert('Success!');
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
alert('Error!');
}
});
响应似乎总是这样:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html>
<head>
<title></title>
</head>
<body>
{"aaData":[["2007-08-01","91109507","Invoice","10.000000","AUD"],["2007-08-02","91110103","Invoice","5.000000","AUD"],["2007-08-02","91110122","Invoice","305.000000","AUD"],["2007-08-02","91110129","Invoice","320.000000","AUD"],["2007-08-03","91111146","Credit
for Returns","10.000000","AUD"],["2007-08-06","91111895","Credit
for Returns","320.000000","AUD"],["2007-09-03","91128486","Credit
Memo","5.000000","AUD"],["2007-09-03","91128487","Credit
etc, etc
根据响应头,它肯定认为是 JSON:
HTTP/1.1 200 OK
Content-Type: application/json
Server: Microsoft-IIS/7.5
X-Powered-By: PHP/5.3.3
每当我运行代码时,它都会提示“错误!”每次都被解雇,这是可以理解的...... 有人知道为什么响应中包含 HTML 吗?
【问题讨论】:
-
如何检查响应?
-
您的应用程序可能会在其他地方执行此操作,并且由于您启用了输出缓冲,您不会收到“标头已发送”错误。
-
您使用的是框架还是独立的 PHP 文件?
-
用 Firebug 检查响应
-
没有使用任何 PHp 框架,使用了我编写的一些类,但是除了调用几个 SQL 查询之外,它们没有做任何令人兴奋的事情。
标签: php jquery json content-type