`header("Content-type:application/json");`的用法
Posted
技术标签:
【中文标题】`header("Content-type:application/json");`的用法【英文标题】:The usage of `header("Content-type:application/json");` 【发布时间】:2016-05-19 00:30:36 【问题描述】:我刚刚创建了一个 JQuery ajax
函数来从 php
检索一些 json-encoded
数据,这是我的代码:
文件名:bank.php
$('form').on('submit', function()
var datatobesent = $(this).serialize();
$.ajax(
data: datatobesent,
url:'data.php',
type:'GET'
)
.done(function(data)
console.log(typeof(data));
);
return false;
)
我在data.php
中写道
if(isset($_GET))
$data = $_GET;
echo json_encode($data);
header("Content-type:application/json");
问题是,当我删除data.php
中的header("Content-type:application/json");
行时,console.log
告诉ajax
返回的数据类型是string
。
当我在bank.php
的ajax
函数中添加dataType :
json`` 时,类型变为object
那么header("Content-type:application/json");
究竟有什么作用呢?
【问题讨论】:
如果您使用的是 dataType : Json.那么就不需要使用 header 函数,它会给你 json 结果。你只需要解析或字符串化 旁注:标题位于 正文之前。如果您的代码没有崩溃,那是因为您启用了输出缓冲。 【参考方案1】:header("Content-type:application/json")
函数将 http json 标头发送到浏览器,以告知他他期望的数据类型。您可以在浏览器中查看每个请求的所有 http 标头(如果您使用的是 chrome open 开发人员工具,请转到网络,调整视图并重新加载页面,如果您单击任何一个,您将看到浏览器发出的所有请求在这些请求中的任何一个上,然后单击标题,您将看到每个请求的标题)。
当您使用此功能时,您会注意到服务器发送的响应中的 http 标头 Content-Type:application/json
。如果你不使用它,服务器将发送默认值,很可能是Content-type:text/html; charset=UTF-8
正如@Monty 所说,如果您将dataType: 'json'
添加到 AJAX 中,则不需要此功能,因为 Jquery 将处理数据,即使它是使用 text/html 标头发送的。
另请参阅:jQuery AJAX Call to PHP Script with JSON Return
要阅读有关标头的更多信息:http-headers-for-dummies
【讨论】:
或者她,火狐是妈妈以上是关于`header("Content-type:application/json");`的用法的主要内容,如果未能解决你的问题,请参考以下文章