出于对未知的恐惧,我一直试图避免使用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
时,为什么不能直接从处理程序函数访问属性
发布于 2013-12-17 04:48:49
Content-Type
头只用作您的应用程序的信息。浏览器并不关心它是什么。浏览器只返回AJAX调用的数据。如果希望将其解析为JSON,则需要自己完成。
头部在那里,这样你的应用程序就可以检测返回了什么数据,以及它应该如何处理这些数据。您需要查看标头,如果它是application/json
,则将其解析为JSON。
这实际上就是jQuery的工作原理。如果您不告诉它如何处理结果,它将使用Content-Type
来检测如何处理结果。
发布于 2014-07-21 14:06:12
Content-Type: application/json
只是内容头文件。content头部只是关于返回数据的类型的信息,例如:JSON、image(png、jpg等)、html。
请记住,JavaScript中JSON是一个数组或对象。如果您想查看所有数据,请使用console.log而不是alert:
alert(response.text); // Will alert "[object Object]" string
console.log(response.text); // Will log all data objects
如果您想以字符串形式警告原始JSON内容,则添加单引号('):
echo "'" . json_encode(array('text' => 'omrele')) . "'";
// alert(response.text) will alert {"text":"omrele"}
不要使用双引号。它会混淆JavaScript,因为JSON在每个值和键上使用双引号:
echo '<script>var returndata=';
echo '"' . json_encode(array('text' => 'omrele')) . '"';
echo ';</script>';
// It will return the wrong JavaScript code:
<script>var returndata="{"text":"omrele"}";</script>
发布于 2022-02-08 14:07:04
这是旧的,但对于我的PHP8来说,如果字符集是set example,它就可以工作。
header('Content-Type: application/json; charset=utf-8');
echo json_encode(array('text' => 'eggs'));
https://stackoverflow.com/questions/20620300
复制相似问题