从Javascript发送JSON并收集值WebApi

时间:2016-04-29 22:04:51

标签: json asp.net-web-api2

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

他做的第一件事是路由Web API para Calling Methods Specific Power,我在WebConfig中做了如下:

<code>
config.Routes.MapHttpRoute(
    name: "DefaultApiRouted",
    routeTemplate: "api/{controller}/{action}/{param}",
    defaults: new { param = RouteParameter.Optional }
);</code>

在这个操作之后我决定在ValuesController中创建一个特定的方法,它继承自ApiController:

<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>

我浏览了很多页面并尝试了很多例子并且没有让那个人进入一个值,该方法被执行但是那个人是null,而我还尝试过ICustomFormater,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>

El resultado que me envia la webApi hacia el js si la recibo bien y en formato JSOn pero es que a la inversa no soy capaz de recoger el valor,si alguien puede ayudarme seloagradeceríamoreo。

1 个答案:

答案 0 :(得分:0)

您的路线配置看起来正确

Pruebla中的ValuesController操作只应使用一个Http属性进行修饰。在这种情况下应该是[HttpPost] ...

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

您可以在JavaScript中创建Persona,如...

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) {

    }    
});