angular.js $ http相当于jquery的ajax传统参数

时间:2014-04-02 09:49:43

标签: jquery ajax angularjs

如下所述:What is "traditional style of param serialization' in JQuery并在此处: passing array from javascript to controller MVC 4

jQuery ajax函数可以选择在使用traditional = true发送到服务器之前更改对象的序列化方式。这对于将一组对象发送到服务器非常有用。

angular $http指令中是否有类似的选项?

3 个答案:

答案 0 :(得分:5)

这是$ http服务中的内置功能。<​​/ p>

确实,as described in doc

$http({method: 'GET', url: '/someUrl', params: someMap})

将根据此参数规则进行“ajax”调用序列化someMap

  

{Object.string | Object} - 字符串或对象的映射   在网址后转到?key1 = value1&amp; key2 = value2。如果值不是   一个字符串,它将是JSONified。

编辑:回答您的问题

  

angular的$ http实用程序中是否有类似的选项?

即可。您应该根据需要手动处理转换(您可以使用jQuery的API)。如果你想改变全局行为,Bixi的答案非常有趣,但似乎你需要按需特定的参数序列化。

答案 1 :(得分:3)

是的,你可以角度处理这个问题。

在模块的配置块中,您只需添加:

$httpProvider.defaults.transformRequest = function(data) {
    if (data === undefined) {
        return data;
    }
    return $.param(data);
};

转换params请求更多“url like”

请参阅$http angularjs documentation

答案 2 :(得分:2)

Bixi的代码非常接近。

我是这样做的:

$httpProvider.defaults.transformRequest = function(data) {
    if (data === undefined) {
        return data;
    }
    return $.param(data, true); // SOS : set `traditional` arg to true for array serialization to be compatible with ASP MVC model binder.
};

查看$ .param()的文档:http://api.jquery.com/jquery.param/

这将有助于数组序列化。