请求和响应类型之间的Ajax函数依赖关系

时间:2016-12-13 09:46:18

标签: javascript json ajax http-headers content-type

如果我使用:

xhr.setRequestHeader("Content-Type", "application/json");

我是否也被迫收到json回复?或者我可以收到html回复?

如果我能收到任何我想要的格式,那么动态管理这两个方面的最佳方法是什么:

  1. 我将解析响应的方式(解析json与否)
  2. 要使用的Accept标头
  3. 例如我的函数应该设置:

    xhr.setRequestHeader('Accept', "application/json");
    

    如果它等待json响应,但也对响应进行json解析,但是如果它是html响应,则不需要这样的事情。

    那么有没有办法动态管理响应处理?

2 个答案:

答案 0 :(得分:0)

实际上,content-type是您要发送到服务器的数据类型。另一方面,数据类型或您提到的接受用于与服务器协商您期望的数据类型。因此,作为客户端,您可以请求多种数据类型,例如

httpRequest.setRequestHeader('Accept', 'application/json, text/xml');

但是您有责任处理您在客户端解析的数据类型。在服务器端,服务器在协商期间决定生成所需的数据类型,如xml,json,html等。

所以最后你只是对你要求的数据格式负责。如果你请求json,那么服务器响应数据可能是json而不是xml,但你必须记住它取决于服务器端它有哪种数据类型选择,大多数时候它的json或xml(将知道数据交换为fromat)然后你不必请求html,这种机制称为内容协商

答案 1 :(得分:0)

  

我是否也被迫接受json回复?

没有。您发送的数据格式和收到的数据格式无关。

  

或者我可以收到HTML回复?

你可以。

  

我将解析响应的方式(解析json与否)

阅读Content-Type响应标头并使用它来确定数据的格式。

  

使用哪个Accept标头

要求您提供以下数据格式:

  • 很容易解析和处理
  • 知道服务器能够发送