I am using the following code:
$http({
method: 'GET',
url: '/Admin/GetTestAccounts',
data: { applicationId: 3 }
}).success(function (result) {
$scope.testAccounts = result;
});
The code sends the following to my server:
http://127.0.0.1:81/Admin/GetTestAccounts
When this is received by my 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);
}
It complains that there is no applicationId.
The parameters dictionary contains a null entry for parameter 'applicationId' of non-nullable type 'System.Int32' for method
Can someone explain why the applicationId is not being sent as a parameter? Previously I was doing this with the following non-Angular code and it worked just fine:
$.ajax({
url: '/Admin/GetTestAccounts',
data: { applicationId: 3 },
type: 'GET',
success: function (data) {
eViewModel.testAccounts(data);
}
});
Passing multiple parameters to Http get request We have to pass page & per_page parameters to the list of users API. let queryParams = new HttpParams(); queryParams = queryParams. append("page",1); queryParams = queryParams. append("per_page",1);
$http is an AngularJS service for reading data from remote servers.
Can I send data using the HTTP GET method? No, HTTP GET requests cannot have a message body. But you still can send data to the server using the URL parameters. In this case, you are limited to the maximum size of the URL, which is about 2000 characters (depends on the browser).
If you don't want to use jQuery's $.param you can use $http's param field which serializes an object.
var params = {
applicationId: 3
}
$http({
url: '/Admin/GetTestAccounts',
method: 'GET',
params: params
});
Ok, I will try to answer this.
I think the problem is that angularjs presume that data passed to http will be urlencoded. I am not sure why angular doesn't serialize it implicitly if there's an object. So you have to encode it yourself:
$http({
method: 'GET',
url: '/Admin/GetTestAccounts',
data: 'applicationId=3'
})
or use jQuery param to encode it for you:
$http({
method: 'GET',
url: '/Admin/GetTestAccounts',
data: $.param({ applicationId: 3 })
})
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