【问题标题】:Parameters null in Web API ajax CallWeb API ajax 调用中的参数 null
【发布时间】:2013-07-19 03:42:39
【问题描述】:

这是我第一次使用 Web API。我正在尝试通过 jquery ajax 调用来调用 web api。 ajax 调用成功命中 web api 操作,但字符串参数“xx”始终为空。

Ajax 调用

 var x = "chamara";
   $.ajax({
   type: 'POST',
   url: 'http://localhost:1557/api/values/mytest',
   data: '{"xx":"' + x + '"}',
   dataType: 'json',
   }); 

Web API 操作。

[AcceptVerbs("GET", "POST")]
 public void mytest([FromBody]string xx)
 { 
  string a = xx;

 }

web api 路由配置。

config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{action}/{id}",
            defaults: new { action = "get", id = RouteParameter.Optional }
            );

【问题讨论】:

    标签: asp.net-mvc jquery asp.net-mvc-4 asp.net-web-api


    【解决方案1】:

    试试这个:

    var x = "chamara";
    $.ajax({
        type: 'POST',
        url: 'http://localhost:1557/api/values/mytest',
        data: { '' : x },
        dataType: 'json',
    }); 
    

    今天早上我遇到了同样的事情。我不知道为什么,我觉得应该有更好的方法,但它对我有用。

    或者,请参阅this SO question,其中解决方案建议将contentType 设置为application/json

    【讨论】:

    【解决方案2】:

    我用 JQuery 编写了这个简单的代码来解决我所有的 Microsoft .NET WebApi 问题:

    $.webApi = function (method, url, data) {
        return $.ajax(url, {
            type: method,
            data: typeof (data) === "object" ? JSON.stringify(data) : data,
            dataType: "json",
            contentType: "application/json"
        })
    };
    

    我这样称呼它:

    $.webApi("POST", "http://url", {object:data});
    

    让一切变得美好而简单。而且我不必每次都记住所有设置。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-12
      • 2016-07-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多