首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >HTTP内容类型标头和JSON

HTTP内容类型标头和JSON
EN

Stack Overflow用户
提问于 2013-12-17 04:30:53
回答 4查看 909.9K关注 0票数 160

出于对未知的恐惧,我一直试图避免使用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时,为什么不能直接从处理程序函数访问属性

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-12-17 04:48:49

Content-Type头只用作您的应用程序的信息。浏览器并不关心它是什么。浏览器只返回AJAX调用的数据。如果希望将其解析为JSON,则需要自己完成。

头部在那里,这样你的应用程序就可以检测返回了什么数据,以及它应该如何处理这些数据。您需要查看标头,如果它是application/json,则将其解析为JSON。

这实际上就是jQuery的工作原理。如果您不告诉它如何处理结果,它将使用Content-Type来检测如何处理结果。

票数 145
EN

Stack Overflow用户

发布于 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>
票数 11
EN

Stack Overflow用户

发布于 2022-02-08 14:07:04

这是旧的,但对于我的PHP8来说,如果字符集是set example,它就可以工作。

header('Content-Type: application/json; charset=utf-8');
echo json_encode(array('text' => 'eggs'));
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20620300

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档