Senden Array über GET Anfrage mit AngularJS $ http Service
Brauche ich zum senden einer GET-Anforderung mit der $http
service. Einer der Parameter wird ein array von ids. So sieht die url aus einer mysite.com/items?id[]=1&id[]=2&id[]=3&id[]=4
Ich habe versucht, diesen Ansatz
$http(
method: 'GET',
url: '/items',
params: {
id: ids //ids is [1, 2, 3, 4]
}
)
aber die url die ich obain ist mysite.com/items?id=%5B%221%22%2C%222%22%2C%223%22%2C%224%22%5D
Weil Eckig ist meine Umwandlung Wert in eine JSON-string. Gibt es einen Weg, um das Verhalten, das ich will?
[Update]
Ich das Problem gelöst, Dank Jonathan ' s Vorschlag mit jQuery $.param()
.
$http(
method: 'GET'
url: '/items?' + $.param({id: ids})
)
InformationsquelleAutor der Frage Gpx | 2013-11-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
InformationsquelleAutor der Antwort Saad Ahmed
Können Sie auch nur tun,
wie bereits erwähnt hier. Scheint einfacher.
InformationsquelleAutor der Antwort Ignacio Valdivieso
jQuery ist toll, aber wenn Ihr das hinzufügen von jQuery, die nur für diese, dann könnte Sie wahrscheinlich mit einem nicht-jQuery-Weg und speichern einige wertvolle bytes.
Nicht jQuery Weise :
Auf Ihrem server konvertiert es zurück in ein array.
ZB. in php
InformationsquelleAutor der Antwort Varun Nath
Dies ist gültig, nur Sie entschlüsseln, auf Ihr backend. Fast alle backend-Sprachen haben eine Weise zu decodieren, die eine URI. Wenn Sie nicht wie die Art und Weise, der Winkel ist zu serialisieren, können Sie versuchen die jquery $.param().
InformationsquelleAutor der Antwort Jonathan Rowny
Die paramSerializer option kann festgelegt werden, zu replizieren Serialisierung von jQuery-Methode:
InformationsquelleAutor der Antwort Lewis
können Sie die $httpParamSerializer oder $httpParamSerializerJQLike
InformationsquelleAutor der Antwort Ben Hsieh
Solange Sie nicht zu viele ids, die dazu führen, dass Ihr Anforderungs-url zu lang abhängig von Ihrer Konfiguration, die folgende Lösung funktionieren wird...
Eckiges Service:
WebApi Controller
InformationsquelleAutor der Antwort AntAsc