【问题标题】:Send JSON from Javascript and collect the value WebApi从 Javascript 发送 JSON 并收集值 WebApi
【发布时间】:2016-04-29 22:04:51
【问题描述】:

搜索结果我正在用 javascript 做一些事情,我需要在后端执行一些操作我决定让 apiweb 联合国,当我发出 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>

我浏览了很多页面并尝试了很多示例,但没有让那个人输入值,我执行了该方法但那个人为空,相反我也尝试了 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 se lo agradecería mucho。

【问题讨论】:

  • 您需要编辑才能翻译成正确的英文最后一段

标签: json asp.net-web-api2


【解决方案1】:

您的路线配置看起来正确

ValuesController 中的 Pruebla 动作只能用一个 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) {

    }    
});

【讨论】:

  • 谢谢你的回答,我试过你的解决方案,但我有一个小问题。这 2 行不起作用:contentType:“application/json”和 dataType:“json”,当我使用这 2 行时,如果我删除这 2 行调用到达服务器,则对 web api 的调用是错误 400但是方法(数据)的参数没有得到值,总是为空。我将自 Visual Studio 2015 中的 Cordova 以来的 Javascript 发送到 Visual Studio 2015 中的 Web API。我不明白为什么当我使用此行时调用失败,你知道为什么会发生这种情况吗?
  • 奇怪。尝试使用单引号 ' 而不是双引号 "。还要检查正在发送的请求。您可以使用 Fiddler 或浏览器 (F12)
  • 非常感谢,现在这个作品很完美,可能是我抄错了。
  • 德纳达 :)。如果此答案对您有用,请投票。谢谢。
猜你喜欢
  • 2019-05-14
  • 2017-10-11
  • 2019-10-04
  • 2017-07-10
  • 1970-01-01
  • 1970-01-01
  • 2019-12-18
  • 2015-12-13
  • 1970-01-01
相关资源
最近更新 更多