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}) )
$http is an AngularJS service for reading data from remote servers.
Use the HttpClient.get() method to fetch data from a server. The asynchronous method sends an HTTP request, and returns an Observable that emits the requested data when the response is received. The return type varies based on the observe and responseType values that you pass to the call.
To add or overwrite these defaults, simply add or remove a property from these configuration objects. To add headers for an HTTP method other than POST or PUT, simply add a new object with the lowercased HTTP method name as the key, e.g. $httpProvider. defaults.
get(url) . then(function (response) { console. log('get',response) }) . catch(function (data) { // Handle error here });
You can also just do
$http( method: 'GET', url: '/items', params: { "id[]": ids // ids is [1, 2, 3, 4] } )
as mentioned here. Seems simpler.
$http( method: 'GET', url: '/items', params: { id: JSON.stringify(ids) // ids is [1, 2, 3, 4] } )
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With