Wie kann ich die sende-Parameter in der http-Anforderung mit AngularJS?
Ich bin mit dem folgenden code:
$http({
method: 'GET',
url: '/Admin/GetTestAccounts',
data: { applicationId: 3 }
}).success(function (result) {
$scope.testAccounts = result;
});
Den code sendet den folgenden zu meinem server:
http://127.0.0.1:81/Admin/GetTestAccounts
Wenn diese empfangen wird durch meine MVC-controller:
[HttpGet]
public virtual ActionResult GetTestAccounts(int applicationId)
{
var testAccounts =
(
from testAccount in this._testAccountService.GetTestAccounts(applicationId)
select new
{
Id = testAccount.TestAccountId,
Name = testAccount.Name
}
).ToList();
return Json(testAccounts, JsonRequestBehavior.AllowGet);
}
Beschwert es sich, dass es keine applicationId.
Den Parameter-dictionary enthält einen null-Eintrag für den parameter 'applicationId' nicht-nullable-Typ 'System.Int32' - Methode
Kann mir jemand erklären, warum die applicationId nicht gesendet werden, da ein parameter? Bisher war mir dies mit den folgenden non-Angular-code, und es hat Prima funktioniert:
$.ajax({
url: '/Admin/GetTestAccounts',
data: { applicationId: 3 },
type: 'GET',
success: function (data) {
eViewModel.testAccounts(data);
}
});
Funktioniert diese Hilfe? stackoverflow.com/questions/10520174/...
Ich sah den link, den Sie gab mir, und ich bin noch mehr verwirrt jetzt 🙁
Blick auf die url in der browser-Konsole Registerkarte "Netzwerk" .. wie sieht es aus?
haben Sie versucht, mit jQuery param
warum gehst du nicht Anhängen Anwendungs-id direkt in der url im query string
Ich sah den link, den Sie gab mir, und ich bin noch mehr verwirrt jetzt 🙁
Blick auf die url in der browser-Konsole Registerkarte "Netzwerk" .. wie sieht es aus?
haben Sie versucht, mit jQuery param
$.param({ applicationId: 3 })
?warum gehst du nicht Anhängen Anwendungs-id direkt in der url im query string
InformationsquelleAutor Alan2 | 2013-03-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie nicht wollen, verwenden Sie die jQuery -$.param können Sie die $http - param Feld wird ein Objekt serialisiert.
Die url-Kodierung der params ärger für mich, wenn die Date-Objekte beteiligt sind. Die Serialisierung pads das Datum mit dem Zeichen '%22' (doppeltes Anführungszeichen), die Ergebnisse in der modelbinder von WebAPI/MVC andernfalls zu Deserialisieren Sie das Datum ein.
Ich habe von ihm ein issue auf Github für das github.com/angular/angular.js/issues/8150
Dies wird behoben, in 1.3.16
Dieser wurde nicht behoben Moment.js. So sicher sein, zu verwenden .toDate (), wenn Sie es verwenden.
InformationsquelleAutor Lucas Raines
Ok, ich werde versuchen diese zu beantworten.
Ich denke, das problem ist, dass angularjs davon ausgehen, dass Daten an http urlencoded. Ich bin nicht sicher, warum die Winkel nicht zu serialisieren implizit, wenn es ein Objekt. So haben Sie zum codieren selbst:
oder verwenden Sie jQuery param codieren für Sie:
Basierend auf Ihrer Diskussion der
angular.extend()
ich würde vermuten, die Sie nicht mögen, zu implementieren Tiefe Kopie und dergleichen.Ebenso könnten Sie implementieren eine flache API-Abfrage-design, oder verwenden Sie JSON Anfragen
Verwenden Sie keine
data
imGET
Anfrage, die Sie verwendenparams
Immer Fehler: $ definiert ist, nicht in der Nähe von $.param
InformationsquelleAutor davekr