【问题标题】:AJAX post string array to webapi 2AJAX 将字符串数组发布到 webapi 2
【发布时间】:2019-03-30 11:08:04
【问题描述】:

这是我的 ajax 调用:

var myIds = ["A","B","C"]
$.ajax({
    type: "POST",
    url: /DoStuffAndThings?year=2018&name=test,
    data: {myIds: myIds},
    traditional: false
});

这是我的控制器操作:

[HttpPost]
public void DoStuffAndThings(int year, string name, [FromBody] List<string> myIds) {
    // do stuff
}

年份和名称没有问题,但 myIds 始终为空。

我试过了

data: {myIds: myIds}data: myIdsdata: {"": myIds} 我尝试使用 Ienumerable&lt;string&gt;List&lt;string&gt;string[]

我尝试过传统的:真假

【问题讨论】:

    标签: c# ajax asp.net-web-api asp.net-web-api2


    【解决方案1】:

    模型绑定器无法解析发送数据,因为它不知道格式

    使用JSON.stringify和相应的参数

    var myIds = ["A","B","C"];
    $.ajax({
        type: "POST",
        url: "/DoStuffAndThings?year=2018&name=test",
        contentType: "application/json",
        dataType: "json",
        data:JSON.stringify(myIds),
        traditional: false
    });
    

    然后模型绑定器应该能够识别请求正文中的字符串集合。

    【讨论】:

    • 这在我指定 contentType 和 dataType 时有效
    【解决方案2】:

    向网络服务器发送数据时,数据必须是字符串。 使用 JSON.stringify() 将 JavaScript 对象转换为字符串。

    在数据之前,使用JSON.stringify(myIds)

     var myIds = ["A","B","C"]
      $.ajax({
           type: "POST",
           contentType: "application/json",
           dataType: 'json',
           url: /DoStuffAndThings?year=2018&name=test,
           data: JSON.stringify(myIds),
           traditional: false
     });
    

    【讨论】:

      猜你喜欢
      • 2017-08-13
      • 1970-01-01
      • 2014-03-19
      • 2013-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-20
      • 2017-08-29
      相关资源
      最近更新 更多