Ajax 如何指定数据类型:';json';在Angular.js$http.post中?

Ajax 如何指定数据类型:';json';在Angular.js$http.post中?,ajax,json,angularjs,Ajax,Json,Angularjs,我想指定数据类型:“json”,就像传统的jQuery$.ajax一样。 Angular.js$http.post是否可以实现这一点 转换请求和响应 请求和响应都可以使用转换函数进行转换。默认情况下,Angular应用以下变换: 请求转换: 如果请求配置对象的数据属性包含对象,则将其序列化为JSON格式。 响应转换: 如果检测到XSRF前缀,请将其去除(请参阅下面的安全注意事项部分) 如果检测到json响应,则使用json解析器对其进行反序列化 因此,无需设置数据类型—它是自动完成的您可以使

我想指定
数据类型:“json”
,就像传统的jQuery
$.ajax
一样。 Angular.js
$http.post是否可以实现这一点

转换请求和响应 请求和响应都可以使用转换函数进行转换。默认情况下,Angular应用以下变换:

请求转换:

  • 如果请求配置对象的数据属性包含对象,则将其序列化为JSON格式。 响应转换:

  • 如果检测到XSRF前缀,请将其去除(请参阅下面的安全注意事项部分)

  • 如果检测到json响应,则使用json解析器对其进行反序列化

因此,无需设置数据类型—它是自动完成的

您可以使用HTTP配置对象来设置标题:

$http({
    method: 'POST',
    url: 'somewhere.xyz',
    headers: {
        'Content-type': 'application/json'
    }
})

我也遇到了同样的问题,
responseType:'json'
解决了这个问题

您可以使用responseType:'json'而不是数据类型:'json'

var promise = $http({
            method: 'POST',
            url: 'somewhere.xyz',
            responseType:'json'

        });
供进一步参考

问题在于服务器根据数据类型使用HTML/XML/JSON进行响应。URL总是一样的。@Paul你是说
Accept
标题吗?我是说中的
内容类型
request@Paul因此,服务器读取请求内容类型以确定响应类型?@Paul FYI jQuery在将数据类型设置为“json”而不是
内容类型时设置
Accept
头校长先生,我之前只发表评论。如果要从服务器端发送json对象作为响应,则需要始终设置标题。普通经典打印({id:11})可能会引发错误。设置标题内容类型为json,应该可以正常工作。Cyaarggh伙计,你刚刚救了我一天!我一直在想为什么我的Node/Express4不能解析POST数据。。。事实证明,我必须在$http请求中放弃标题内容类型。。。。。该死的!无需设置上述参数,因为这是默认值。请参阅:。这有助于您,这可能表明您的代码正在将其他地方的默认标头设置为另一个值。在ResponseType中,您将指向哪个值,这听起来像是对服务器内容类型的重写,但请注意:“将responseType设置为特定值时,作者应确保服务器实际发送的响应与该格式兼容。如果服务器返回的数据与设置的responseType不兼容,response的值将为null。“