`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.phpajax 函数中添加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");`的用法的主要内容,如果未能解决你的问题,请参考以下文章

php-生成数据库设计文档

关于小程序后台post不到数据的问题

上传亚马逊库存 UTF 8 编码

Python题目5:爬取CFDA数据

如何确保您想要的文件名输出到浏览器

PHP简单实现一言 / 随机一句功能