如下所述:What is "traditional style of param serialization' in JQuery并在此处: passing array from javascript to controller MVC 4
jQuery ajax函数可以选择在使用traditional = true
发送到服务器之前更改对象的序列化方式。这对于将一组对象发送到服务器非常有用。
angular $http
指令中是否有类似的选项?
答案 0 :(得分:5)
这是$ http服务中的内置功能。</ p>
$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”
答案 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/
这将有助于数组序列化。