我看到,通过$.ajax()
,我可以使用dataType
属性来告诉jQuery我期望从服务器得到什么样的响应,通常是json
.
但是在服务器端,我如何知道所请求的数据类型?
我知道通常服务器应该根据请求的内容知道要发送什么内容,但我的用例在这里有点不同。我有一个用 PHP 构建的错误处理程序,我想知道以哪种格式输出调试信息。如果出现致命/语法错误、警告,脚本甚至可能无法到达与请求关联的请求处理函数。
有一个 CONTENT_TYPE
header ,但显然它始终是 application/x-www-form-urlencoded
,并且仅在 POST
请求上发送。
还有一个 HTTP_ACCEPT
header ,看起来像 application/json, text/javascript, */*; q=0.01
。我需要解析这个字符串吗?
最佳答案
客户端没有标准方法告诉服务器需要什么数据类型。客户端不会告诉“我想要文本/纯文本”或“请只使用 HTML”(这只能从 URI 中假设)。他们只告诉他们可以解释的内容 (HTTP_ACCEPT
) 以及他们发布的内容 (CONTENT_TYPE
)。
为了使服务器端错误处理程序能够可靠地确定要使用的输出格式,您可以在请求中传递其他请求 header 或查询参数,例如:
$.ajax({
...
headers: {
"X-Expected-Format": "text/plain"
}
...
});
关于javascript - 判断HTTP请求的数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30949108/