Gio*_*Gpx 48 javascript http angularjs angular-http
我需要使用该$http服务发送GET请求.其中一个参数是一组id.网址看起来像这个mysite.com/items?id[]=1&id[]=2&id[]=3&id[]=4
我试过这种方法
$http(
method: 'GET',
url: '/items',
params: {
id: ids // ids is [1, 2, 3, 4]
}
)
Run Code Online (Sandbox Code Playgroud)
但我记下的网址是mysite.com/items?id=%5B%221%22%2C%222%22%2C%223%22%2C%224%22%5D
那是因为Angular在JSON字符串中转换我的值.有没有办法得到我想要的行为?
[更新]
由于Jonathan建议使用jQuery,我解决了这个问题$.param().
$http(
method: 'GET'
url: '/items?' + $.param({id: ids})
)
Run Code Online (Sandbox Code Playgroud)
Ign*_*eso 77
你也可以这样做
$http(
method: 'GET',
url: '/items',
params: {
"id[]": ids // ids is [1, 2, 3, 4]
}
)
Run Code Online (Sandbox Code Playgroud)
如这里提到的.似乎更简单.
Saa*_*med 61
$http(
method: 'GET',
url: '/items',
params: {
id: JSON.stringify(ids) // ids is [1, 2, 3, 4]
}
)
Run Code Online (Sandbox Code Playgroud)
Var*_*ath 10
jQuery很棒但是如果你只为此添加jQuery那么你可以用非jQuery方式来保存一些宝贵的字节.
非jQuery方式:
$http(
method: 'GET',
url: '/items',
params: {
id: ids.toString() //convert array into comma separated values
}
)
Run Code Online (Sandbox Code Playgroud)
在您的服务器上将其转换回数组.
例如.在PHP中
$ids = explode(',',Input::get('ids'));
//now you can loop through the data like you would through a regular array.
foreach($ids as $id)
{
//do something
}
Run Code Online (Sandbox Code Playgroud)