AngularJS资源查询是错误解释由数组组成的对象

时间:2015-06-10 12:20:26

标签: php angularjs api angular-resource

我有以下资源:

var get = $resource('http://localhost/', {}, {
        query: {
            method: 'GET',
            headers: { 'Content-Type': 'application/json' },
            params: { 'a': [10, 20, 30] }
        }
    });

我的问题是AngularJS正在将此转换为对此网址的调用:

http://localhost/api?a=10&a=20&a=30

在另一端(http://localhost/api),我有一个PHP应用程序,正如a = 30那样解释它。

我认为Angular并没有以正确的方式解释对象参数。它应该调用url:

http://localhost/api?a%5B0%5D=10&a%5B1%5D=20&a%5B2%5D=30

哪个会转换为a[0]=10&a[1]=20&a[2]=30。 PHP将其解释为'a':[10,20,30]。

如何让AngularJS以正确的方式翻译我的查询(从我的PHP应用程序的角度来看)?

1 个答案:

答案 0 :(得分:1)

如何将数组序列化为查询字符串没有特别的标准。不同的后端需要不同的格式。选择此当前方法(在1.1.x中)是因为它允许开发人员具有最大的灵活性。

您可以通过设置参数来获得所需的序列化:

params = {
  "a[]": [10, 20, 30]
};