我的angular.js应用将以下JSON发布到我的后端API:

{"pickupAddress":
                {"state":"d","country":"d","city":"d","zipCode":"d","street":"d"},
 ...}`


取而代之的是,我的后端API要求接收的不是pickupAddress.state,而是pickupAddress[state]

我试图将视图中的ng-model更改为(myObject.pickupAddress['country']),但这会产生一些奇怪的错误。

我想要一些结果(使用原始html):

<input type="text" name="pickupAddress[state]" />

最佳答案

如果提供对象源,Angular序列化POST数据的方式实际上是使用服务期望的符号。相反,如果使用jQuery $ .param方法将对象序列化为param-string并发布此字符串,则它应该可以工作:

var data = $.param({
    "pickupAddress": {
        "state": "d",
        "country": "d",
        "city": "d",
        "zipCode": "d",
        "street": "d"
    }
});

$http.post('test', data, {
    headers: {'Content-Type': 'application/x-www-form-urlencoded'}
});


以上将发布数据为

pickupAddress[state]:d
pickupAddress[country]:d
pickupAddress[city]:d
pickupAddress[zipCode]:d
pickupAddress[street]:d


在Angular问题页面中检查此discussion

10-07 17:53