[英].Net properties are missing in the response got from AngularJs Ajax call to Asp.Net Web Api
[英]AngularJS $http ajax not working on asp.net web api call
我有一个简单的AngularJS ajax调用,如下所示。
$scope.modelObject.sendRequest = function (requestType) {
var dataTemp = { first: 7, second: 3 } ;
alert($httpParamSerializer(dataTemp));
$http({
url: '/api/bindings/sumnumbers',
data: $httpParamSerializer(dataTemp),
headers: { 'Content-Type': 'application/x-www-form-urlencoded' }
}
).success(function () {});
}
在另一端,我有一个Web API BindingsController,具有sumnumbers操作方法,如下所示。
[HttpGet]
[HttpPost]
public async Task<IHttpActionResult> SumNumbers() {
if (Request.Content.IsFormData()) {
NameValueCollection jqData = await Request.Content.ReadAsFormDataAsync();
int firstValue, secondValue;
if (TryGetValues(jqData, "first", "second", out firstValue,
out secondValue)) {
return Ok(firstValue + secondValue);
} else if (TryGetValues(jqData, "value1", "value2", out firstValue,
out secondValue)) {
return Ok(firstValue - secondValue);
}
}
return StatusCode(HttpStatusCode.BadRequest);
}
javascript代码中的alert($httpParamSerializer(dataTemp));
正在正确显示数据。 我在action方法中放置的一个断点被击中,表明调用成功。 但是问题是TryGetValues(jqData ...无法获取任何值。看到jqData
(NameValueCollection)的AllKeys
属性根本没有任何键!!有人可以建议我缺少什么吗?
从我这是一个小错误。 只需添加
method:'Post'
在通话中,因此通话变为
$http({
method:'Post',
url: '/api/bindings/sumnumbers',
data: $httpParamSerializer(dataTemp),
headers: { 'Content-Type': 'application/x-www-form-urlencoded' }
}
我用提琴手找到了这个。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.