繁体   English   中英

AngularJS $ http ajax无法在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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM