Web API ajax Call中的参数为null

时间:2013-07-19 03:42:40

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

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

调用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 }
            );

2 个答案:

答案 0 :(得分:2)

试试这个:

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

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

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

答案 1 :(得分:0)

我用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});

使一切变得轻松简单。而且我不必每次都记住所有设置。