为了避免未知,我一直试图避免使用大多数HTTP协议的属性。
但是,我对自己说,我今天将面对恐惧并开始有目的地使用标题。我一直在尝试将json
数据发送到浏览器并立即使用。例如,如果我有一个处于就绪状态4的Ajax处理程序函数,如下所示:
function ajaxHandler(response){
alert(response.text);
}
并且我在PHP代码中设置了content-type标头:
header('Content-Type: application/json');
echo json_encode(array('text' => 'omrele'));
当清楚地告诉浏览器传入数据为时,为什么不能直接从处理程序函数访问该属性application/json
?
contentType标头仅是信息。浏览器将尽可能使用它,但是在这种情况下,浏览器只是忽略它,因为它们通常不知道意图是什么。您的Javascript应用程序可以利用它。您假设将显示JSON,因此可以使用对其进行解码
JSON.parse()
。您可以采取一些不同的措施,或者如果出现错误的contentType则强制执行错误。
浏览器不会自动为您解析JSON文本,因此
—
nnnnnn 2013年
response.text
仍然是字符串。
因此,您的意思是告诉我,设置标头没有什么区别?那么它存在的目的是什么?
—
php_nub_qq 2013年
@php_nub_qq:目的是告诉您服务器返回了什么,以便您的应用程序可以相应地对其进行处理。该浏览器将无法解析JSON为您,您的应用程序需要做到这一点。此标头告诉您它是(或应为JSON)。
—
火箭Hazmat 2013年
text
在处理程序中用作javascript变量而不响应?那将是非常奇怪的功能。json_encode还会从您的PHP数组中创建1个对象。因此,当您将此内容导入javascript时,需要将其分配给变量。