I need to send a GET request using the $http
service. One of the parameters will be an array of ids. The url looks like this one mysite.com/items?id[]=1&id[]=2&id[]=3&id[]=4
I tried this approach
$http(
method: 'GET',
url: '/items',
params: {
id: ids // ids is [1, 2, 3, 4]
}
)
but the url I obain is mysite.com/items?id=%5B%221%22%2C%222%22%2C%223%22%2C%224%22%5D
That's Because Angular is converting my value in a JSON string. Is there a way to get the behavior I want?
[Update]
I solved the issue thanks to Jonathan's suggestion using jQuery's $.param()
.
$http(
method: 'GET'
url: '/items?' + $.param({id: ids})
)
you can use $httpParamSerializer or $httpParamSerializerJQLike
The paramSerializer option can be set to replicate jQuery's serialization method:
You can also just do
as mentioned here. Seems simpler.
As long as you don't have too many ids, which will cause your request url to be too long depending on your configuration, the following solution will work...
Angular Service:
WebApi Controller
jQuery is great but if your adding jQuery just for this then you could probably do with a non jQuery way and save some precious bytes.
Non jQuery way :
On your server convert it back to an array.
Eg. in php