从Javascript发送JSON并收集WebApi值

从Javascript发送JSON并收集WebApi值,json,asp.net-web-api2,Json,Asp.net Web Api2,搜索结果我正在用javascript做一些事情,我需要在后端执行一些操作,我决定让apiweb成为UN,问题出现在我发出ajax请求时,因为返回(用c#生成)甚至无法收集正在运行的数据方法 他做的第一件事是路由Web API para调用方法特定的Power,我在WebConfig中做了如下操作: <code> config.Routes.MapHttpRoute( name: "DefaultApiRouted", routeTemplate: "api/{cont

搜索结果我正在用javascript做一些事情,我需要在后端执行一些操作,我决定让apiweb成为UN,问题出现在我发出ajax请求时,因为返回(用c#生成)甚至无法收集正在运行的数据方法

他做的第一件事是路由Web API para调用方法特定的Power,我在WebConfig中做了如下操作:

<code>
config.Routes.MapHttpRoute(
    name: "DefaultApiRouted",
    routeTemplate: "api/{controller}/{action}/{param}",
    defaults: new { param = RouteParameter.Optional }
);</code>
完成此操作后,我决定在ValuesController中创建一个特定方法,该方法继承自ApicController:

<code>
[HttpGet]
[HttpPost]
public IHttpActionResult Prueba([FromBody]Persona data)
{
    return Ok(new { message = "Llego" });
}

public class Persona
{
    public string username { set; get; }
    public string email { set; get; }
    public string password { set; get; }
}</code>
我浏览了很多页面,尝试了很多示例,但没有让那个人输入take值,该方法由我执行,但该人为null,相反,我还尝试了icustomformatter、string等。所有这些我都获得了相同的结果,该方法被执行,但没有获取输入值

从Javascrpt发送,如下所示

<code>var Persona = new Object()
    Persona.username ="Pepe";
    Persona.email ="Pepe@pepe.com";
    Persona.password ="12345";

$.ajax({

    url: "http://localhost:5311/api/values/Prueba",
    contentType: "application/json", 
    dataType: "json",
    data: Persona,
    type: 'POST',

    success: function (json) {

       alert(json.message)
    },
    error: function (xhr, status) {
       alert("He petao")
    },

    complete: function (xhr, status) {

    }

});</code>

结果是,我们的网络环境非常好,我们的网络环境非常好,我们的网络环境非常好。您的线路配置看起来是正确的

valuescoontroller
中的
Pruebla
操作只能用一个Http属性修饰。在这种情况下,is应该是
[HttpPost]

[HttpPost]
public IHttpActionResult Prueba([FromBody]Persona data)
{
    return Ok(new { message = "Llego" });
}
你可以用JavaScript创建你的
人物角色
,比如

var persona = {
    username: "Pepe",
    email: "Pepe@pepe.com",
    password: "12345"
};
对该服务的呼叫将略有变化

$.ajax({

    url: 'http://localhost:5311/api/values/Prueba',
    contentType: 'application/json', 
    dataType: 'json',
    data: JSON.stringify(persona),
    type: 'POST',
    success: function (json) {    
       alert(json.message)
    },
    error: function (xhr, status) {
       alert("He petao")
    },    
    complete: function (xhr, status) {

    }    
});

你需要编辑以正确的英语翻译最后一段请你回答,我尝试了你的解决方案,但我有一个小问题。这两行代码不起作用:contentType:“application/json”和dataType:“json”,当我使用这两行代码时,对web api的调用是错误400。如果我删除这两行代码,调用将到达服务器,但方法(数据)的参数没有得到值,总是为null。我正在将Visual studio 2015中cordova之后的Javascript发送到Visual studio 2015中的Web API。我不明白为什么当我使用这条线路时,呼叫失败了,你知道为什么会发生这种情况吗?奇怪。尝试使用单引号
而不是双引号
。还可以检查发送的请求。您可以使用Fiddler或浏览器(F12)非常感谢,现在这项工作非常完美,可能是我复制了一些错误。De nada:)。如果这个答案对您有用,请投票。谢谢。