【发布时间】:2022-05-02 07:45:31
【问题描述】:
出于对未知的恐惧,我一直试图避免使用 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时,为什么我不能直接从处理函数访问属性?
【问题讨论】:
-
如果我理解正确,您想在处理程序中使用
text作为javascript 变量而不是响应?那将是非常奇怪的功能。 json_encode 还会从您的 PHP 数组中创建 1 个对象。因此,当您将其放入 javascript 中时,需要将其分配给一个变量。 -
contentType 标头仅供参考。如果可以,浏览器会使用它,但在这种情况下,浏览器会简单地忽略它,因为它们通常不知道意图是什么。您的 Javascript 应用程序可以使用它。您假设将显示 JSON,因此您可以使用
JSON.parse()对其进行解码。如果出现错误的 contentType,您可以采取一些不同的操作,或者强制出错。 -
浏览器不会自动为你解析JSON文本,所以
response.text仍然是一个字符串。 -
所以你的意思是告诉我设置该标题没有任何区别?那么它存在的目的是什么?
-
@php_nub_qq:它的目的是告诉您服务器返回了什么,以便您的应用程序可以相应地处理它。 浏览器 不会为您解析 JSON,您的应用需要这样做。此标头告诉您它是(或应该是 JSON)。
标签: javascript php json http http-headers