AJAX 将字符串数组发布到 webapi 2

Posted

技术标签:

【中文标题】AJAX 将字符串数组发布到 webapi 2【英文标题】:AJAX post string array to 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: myIdsdata: myIdsdata: "": myIds 我尝试使用 Ienumerable&lt;string&gt;List&lt;string&gt;string[]

我尝试过传统的:真假

【问题讨论】:

【参考方案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
 );

【讨论】:

以上是关于AJAX 将字符串数组发布到 webapi 2的主要内容,如果未能解决你的问题,请参考以下文章

使用表单数据将数组发布到使用 AJAX 的 C# WebAPI

在 ReactJS 中发布了一个字符串数组,但在 WebAPI 中得到了一个字符串

AJAX 将 JavaScript 字符串数组发布到 JsonResult 作为 List<string> 总是返回 Null?

如何使用 POSTMAN 发布字符串数组?

使用 jquery ajax 将 javascript 数组变量发送到 php 脚本(获取字符串作为输出而不是数组)

将空数组发送到 webapi