【问题标题】:cannot call post methods in asp不能在asp中调用post方法
【发布时间】:2016-08-11 05:20:37
【问题描述】:

我只能使用 ajax 调用 asp GET 方法。 这是我的 JavaScript:

$scope.test = function () {
    var dataObject = {};
    dataObject.Company_Code = companyCode;
    $http({
        method: 'POST',
        url: 'http://localhost:31041/api/Location/test',
        data: $.param(dataObject),
        headers: {
            'Content-Type': 'application/x-www-form-urlencoded',
            'Authorization': 'Bearer ' + token
        }
    })
 .success(function (data) {    
 }).error(function () {
 });
}

这是我的 WebAPI 方法:

[HttpPost]
public string test(Company_Details Company)
{
  return "11";
}

我的global.asax 设置:

protected void Application_BeginRequest(object sender, EventArgs e)
        {
            HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin", "*");
            if (HttpContext.Current.Request.HttpMethod == "OPTIONS")
            {
                HttpContext.Current.Response.AddHeader("Cache-Control", "no-cache");
                HttpContext.Current.Response.AddHeader("Access-Control-Allow-Methods", "GET, POST, PUT");
                HttpContext.Current.Response.AddHeader("Access-Control-Allow-Headers", "Content-Type, Accept,Authorization");
                HttpContext.Current.Response.AddHeader("Access-Control-Max-Age", "1728000");
                HttpContext.Current.Response.End();
            }
        }

当我尝试调用此方法时,我收到以下错误: 我也可以使用 URL 参数(url: 'http://localhost:31041/api/Location/test?Name:123',)调用 post 方法。但无法使用data: $.param(dataObject) 传递数据

【问题讨论】:

  • 您收到服务器错误。因此,如果您附加调试器,您应该能够看到异常来自哪里

标签: javascript ajax asp.net-mvc asp.net-web-api


【解决方案1】:

尝试在Company_Detailss参数中添加[FromBody]:

[HttpPost]
public string test([FromBody]Company_Details Company)
{
  return "11";
}

【讨论】:

  • 请添加Company_Details的定义和您定义路由的代码。
  • 公共部分类 Company_Details {public string Company_Code { get;放; } 公共字符串 Company_Prefix { 获取;放; } 公共字符串 Company_Name { 获取;放; } 公共字符串 Company_Addres { 获取;放; } 公共字符串城市 { 获取;放; }}
【解决方案2】:

试试这个

[RoutePrefix("api/Location")]
[HttpPost]
[Route("test")]
public string test(Company_Details Company)
{
    return "11";
}

【讨论】:

    【解决方案3】:

    看起来你需要为你的数据对象使用 JSON.stringify

    method: 'POST',
            url: 'http://localhost:31041/api/Location/test',
            data: JSON.stringify($.param(dataObject))
    

    【讨论】:

      猜你喜欢
      • 2017-05-16
      • 2019-07-19
      • 1970-01-01
      • 2014-11-14
      • 2014-02-10
      • 1970-01-01
      • 1970-01-01
      • 2020-02-02
      • 1970-01-01
      相关资源
      最近更新 更多