AngularJS 资源查询误解了由数组组成的对象
AngularJS resource query is misinterpreting object composed by arrays
我有以下资源:
var get = $resource('http://localhost/', {}, {
query: {
method: 'GET',
headers: { 'Content-Type': 'application/json' },
params: { 'a': [10, 20, 30] }
}
});
我的问题是 AngularJS 正在将其转换为对此 url:
的调用
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.1.x 中),是因为它为开发人员提供了最大的灵活性。
您可以通过将设置参数设置为:
来获得您想要的序列化
params = {
"a[]": [10, 20, 30]
};
我有以下资源:
var get = $resource('http://localhost/', {}, {
query: {
method: 'GET',
headers: { 'Content-Type': 'application/json' },
params: { 'a': [10, 20, 30] }
}
});
我的问题是 AngularJS 正在将其转换为对此 url:
的调用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.1.x 中),是因为它为开发人员提供了最大的灵活性。
您可以通过将设置参数设置为:
来获得您想要的序列化params = {
"a[]": [10, 20, 30]
};