![](/img/trans.png)
[英]PHP header('Content-Type: application/json'); is not working
[英]When to use header('Content-Type: application/json') in PHP
我一直试图弄清楚php脚本中的header('Content-Type: application/json')
的用法是什么,我在stackoverflow上找到了关于这个主题的不同问题和答案,但我仍然没有完全得到它...
所以这里有一个问题:我在一些php项目中看到过这行代码,我正在努力理解
要么
另一件事可以帮助我,如果回答,最近我一直在使用cURL从资源(外部URL)检索json,我不得不在请求中放置此标头(Content-type:application / json)。 我是否将此标题发送到exertnal资源或是这个MY标题,以便我可以处理返回的json?
谢谢
对于那些感兴趣的人,我终于想通了当另一个页面调用php脚本时使用header('Content-Type: application/json')
,以便其他页面可以自动将结果解析为json 。
例如我在我的test.php中:
header('Content-type: application/json; charset=utf-8');
$arr = array ('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5);
echo json_encode($arr); // {"a":1,"b":2,"c":3,"d":4,"e":5}
在我的main.js
function test() {
$.ajax({
url: 'test.php',
type: 'GET',
//dataType: 'html',
success: function (response) {
alert(response);
}
});
};
当我没有将dataType设置为“json”或者我的test.php中没有标题时,警报给出{"a":1,"b":2,"c":3,"d":4,"e":5}
这是一个字符串(尝试使用typeof(响应),当我有这个头,或者dataType:“json”时,我从警报中得到[object Object]
。所以这个头函数是在那里向调用页面指示它返回的数据类型,以便您可以知道如何处理它。在我的脚本中,如果我没有header('Content-Type: application/json')
,我我必须解析javascript中的响应,如下所示: JSON.parse(response)
为了使它成为一个json,但是有了这个头,我已经有了一个json对象,我可以用jSON.stringify(response)
它解析为html jSON.stringify(response)
。
您应始终为任何HTTP响应设置Content-Type
,以描述您在该响应中所服务的内容。
无论是JSON还是其他东西,以及它是用于AJAX请求还是其他任何类型的请求。
您还应该为描述POST有效负载的任何请求设置Content-Type
。
在PHP中,如果您没有在脚本中指定Content-Type
标头,则默认为您配置的default-mimetype在php.ini
文件中,通常为text/html
。
调用header('Content-Type: application/json')
将覆盖该默认设置,以便脚本在请求时响应该Content-Type
。
此外,当使用Content-type:application/json
标头调用curl
时,您要指定请求正文的内容类型,而不是预期的响应。
Content-Type字段的目的是充分描述主体中包含的数据,使得接收用户代理可以选择适当的代理或机制来向用户呈现数据,或者以适当的方式处理数据。
简而言之,只是告知接收者他收到了什么样的数据并相应地消费它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.