c# - 将字符串数组发布到 Web API 方法

标签 c# javascript ajax post asp.net-web-api

这是我的客户端 ajax 调用:

    var list = ["a", "b", "c", "d"];

    var jsonText = { data: list };

    $.ajax({
        type: "POST",
        url: "/api/scheduledItemPriceStatus/updateStatusToDelete",
        data: jsonText,
        dataType: "json",
        traditional: true,
        success: function() { alert("it worked!"); },
        failure: function() { alert("not working..."); }
    });

这是 chrome 网络 header :

Request URL:http://localhost:2538/api/scheduledItemPriceStatus/updateStatusToDelete

Request Method:POST

Request Headersview source

Accept:application/json, text/javascript, */*; q=0.01

Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3

Accept-Encoding:gzip,deflate,sdch

Accept-Language:en-US,en;q=0.8

Connection:keep-alive

Content-Length:27

Content-Type:application/x-www-form-urlencoded; charset=UTF-8

Host:localhost:2538

Origin:http://localhost:2538

Referer:http://localhost:2538/Pricing/ScheduledItemPrices

User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11

X-Requested-With:XMLHttpRequest

表单数据 View URL 编码

data:a
data:b
data:c
data:d

这是我的 webapi Controller 方法:

public HttpResponseMessage UpdateStatusToDelete(string[] data)

结果:

当我调试时,UpdateStatusToDelete 中的数据参数返回 {string[0]} 而不是 data:a 数据:b 数据:c 数据:d

我做错了什么?非常感谢任何帮助。

最佳答案

为了传递简单类型,要发布的数据必须采用名称值对的形式,名称部分为空字符串。所以你需要像这样进行 Ajax 调用:

$.ajax({
  type: "POST",
  url: "/api/values",
  data: { "": list },
  dataType: "json",
  success: function() { alert("it worked!"); },
  failure: function() { alert("not working..."); }
});

此外,在您的 Web API 操作上,使用 [FromBody] 属性对其进行注释。像这样的东西:

public void Post([FromBody]string[] values)

这应该可以解决问题。

关于c# - 将字符串数组发布到 Web API 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14208888/

相关文章:

c# - 如何在命名空间中路由混合 MvcApplication 和 WebApiApplication?

Javascript:命名空间

javascript - 两次使用相同的 AJAX 函数

javascript - 无法在 w3school 的 html 示例中的侧面板中完全向下滚动

javascript - 显示 LOADING 直到页面完全加载

javascript - 聊天应用程序轮询

c# - 使用密码分离数据库

c# - 将二维数组发送到 Web API 服务

c# - 使用 MVVM 处理用户设置

javascript - 如何在 GWT 离线应用程序中包含外部 Javascript