AngularJS $http ajax 无法使用 asp.net 网络 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 ... 无法获取任何值。看到 AllKeys
属性 of jqData
(NameValueCollection),根本没有任何键! !. 有人可以建议我错过了什么吗?
这是我这边的一个小错误。只需添加
method:'Post'
在调用内部,因此调用变为
$http({
method:'Post',
url: '/api/bindings/sumnumbers',
data: $httpParamSerializer(dataTemp),
headers: { 'Content-Type': 'application/x-www-form-urlencoded' }
}
我用 fiddler 找到了这个。
我有一个简单的 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 ... 无法获取任何值。看到 AllKeys
属性 of jqData
(NameValueCollection),根本没有任何键! !. 有人可以建议我错过了什么吗?
这是我这边的一个小错误。只需添加
method:'Post'
在调用内部,因此调用变为
$http({
method:'Post',
url: '/api/bindings/sumnumbers',
data: $httpParamSerializer(dataTemp),
headers: { 'Content-Type': 'application/x-www-form-urlencoded' }
}
我用 fiddler 找到了这个。