猿问

AngularJS - $ http.post发送请求参数而不是JSON的任何方式?

AngularJS - $ http.post发送请求参数而不是JSON的任何方式?

我有一些旧的代码通过jQuery的post方法发出一个AJAX POST请求,看起来像这样:

$.post("/foo/bar", requestData,
    function(responseData)
    {
        //do stuff with response
    }

requestData 只是一个具有一些基本字符串属性的javascript对象。

我正在将我们的东西移动到使用Angular,我想用$ http.post替换这个调用。我想出了以下内容:

$http.post("/foo/bar", requestData).success(
    function(responseData) {
        //do stuff with response
    }});

当我这样做时,我收到了来自服务器的500错误响应。使用Firebug,我发现这样就发送了请求体:

{"param1":"value1","param2":"value2","param3":"value3"}

成功的jQuery $.post发送身体像这样:

param1=value1&param2=value2&param3=value3

我遇到的端点是期望请求参数而不是JSON。所以,我的问题是,无论如何要告诉$http.post发送javascript对象作为请求参数而不是JSON?是的,我知道我可以自己从对象构造字符串,但我想知道Angular是否提供了开箱即用的东西。


holdtom
浏览 995回答 3
3回答

开心每一天1111

来自AngularJS文档:params - {Object。} - 在url之后将转向的字符串或对象的映射?key1 = value1&key2 = value2。如果该值不是字符串,则它将是JSONified。因此,提供字符串作为参数。如果您不想这样,那么使用转换。再次,从文档:要在本地覆盖这些转换,请将转换函数指定为config对象的transformRequest和/或transformResponse属性。要全局覆盖默认转换,请覆盖$ httpProvider的$ httpProvider.defaults.transformRequest和$ httpProvider.defaults.transformResponse属性。有关详细信息,请参阅文档。
随时随地看视频慕课网APP
我要回答