我一直试图弄清楚php脚本中header('Content-Type: application/json')
的用法是什么,我在stackoverflow上找到了关于这个主题的不同问题和答案,但我仍然没有#39;完全得到它......
所以这就是问题所在:我在一些php项目中看到过这行代码,我试图理解
OR
如果有人回答我可以帮助我的另一件事,最近我一直在用cURL从资源(外部网址)中检索json,我不得不在请求中放入这个标题(Content-type:application / json)。我是否将此标题发送到exertnal资源或是这个MY标题,以便我可以处理返回的json?
感谢
答案 0 :(得分:6)
对于那些感兴趣的人,我终于发现header('Content-Type: application/json')
在另一个页面调用php脚本时使用了,因此另一个页面可以自动将结果解析为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。
答案 1 :(得分:1)
您应始终为任何HTTP响应设置Content-Type
,以描述您在该响应中提供的内容。
是JSON还是其他东西,无论是AJAX请求还是其他任何请求。
您还应该为任何请求设置Content-Type
来描述您的POST有效负载。
答案 2 :(得分:0)
W3 Description For the Content-Type
Content-Type字段的目的是充分描述正文中包含的数据,以便接收用户代理可以选择适当的代理或机制来向用户呈现数据,或以其他方式处理数据。适当的方式。
简而言之,只是告知收件人他收到了哪种数据并相应地使用它。
答案 3 :(得分:0)
在PHP中,如果您未在脚本中指定Content-Type
标头,则默认为您php.ini
文件中已配置text/html
的任何内容header('Content-Type: application/json')
。
调用Content-Type
将覆盖该默认设置,以便脚本在请求时以curl
回复。
此外,在使用Content-type:application/json
标题调用$('input[id^=txtEntry]').css('background', 'green');
$('#RecordsWrapper')
.on("click", "input[id^=cmdUpdate]", "input", function(e) {
fldTarget = $(this);
fldAccountID = fldTarget.parent().find("input[id^=txtAccount]").prop("id");
console.log('fldAccountID-->' + fldAccountID);
})
时,您指定的是请求正文的内容类型,而不是预期的响应。