Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc Web API ajax调用中的参数为null_Asp.net Mvc_Jquery_Asp.net Mvc 4_Asp.net Web Api - Fatal编程技术网

Asp.net mvc Web API ajax调用中的参数为null

Asp.net mvc Web API ajax调用中的参数为null,asp.net-mvc,jquery,asp.net-mvc-4,asp.net-web-api,Asp.net Mvc,Jquery,Asp.net Mvc 4,Asp.net Web Api,这是我第一次使用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

这是我第一次使用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;

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

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

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

var x = "chamara";
$.ajax({
    type: 'POST',
    url: 'http://localhost:1557/api/values/mytest',
    data: { '' : x },
    dataType: 'json',
}); 
今天早上我遇到了同样的事情。我不知道为什么,我觉得应该有更好的方法,但这对我很有效


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

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

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

嗯,很有意思。我也可以使用它,但看起来它对多个参数不起作用。不管怎样谢谢你的回答你好。选中此处[FromBody]每个方法只接受一个参数