【问题标题】:Send array of string to WebAPI using ajax使用 ajax 将字符串数组发送到 WebAPI
【发布时间】:2017-08-13 03:39:05
【问题描述】:

我需要向 WebApi 发送一个字符串数组。我尝试了以下代码,但没有得到预期的输出。

在 Javascript 中:

$.ajax({
    url:serviceUrl+'/sample',
    type:'POST',
    data:['a','b','c'],
    contentType:'application/json',
    dataType:'JSON'
}).done(function(data){
    console.log(data);
}).fail(function(data){
    console.log(data);
});

在控制器中:

[Route("sample")]
[HttpPost]
[ResponseType(typeof(string))]
public IHttpActionResult GetSample(List<string> dataFromUI)
{
    return Ok("Success");
}

在 WebAPI 中,我得到没有元素的 dataFromUI。 我什至尝试使用 JSON.stringify 发送数据,但这次我的 dataFromUI 为 null。

如果我得到答案,我会很高兴。

谢谢。

【问题讨论】:

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


    【解决方案1】:

    您需要将您的数组转换为一个对象,该对象包含您希望作为与您的操作参数名称匹配的属性发送的数组,如下所示:

    JSON.stringify({ dataFromUI: ['a','b','c'] })
    

    完整的代码如下所示:

    $.ajax({
        url:serviceUrl+'/sample',
        type:'POST',
        data: JSON.stringify({ dataFromUI: ['a','b','c'] }),
        contentType:'application/json',
        dataType:'JSON'
    }).done(function(data){
        console.log(data);
    }).fail(function(data){
        console.log(data);
    });
    

    【讨论】:

    • 将 dataFromUI 设为 null
    • 你的意思是你的控制器正在接收 dataFromUi 作为空值吗?
    • 是的,我正在接收 dataFromUi 作为空值
    【解决方案2】:

    您为您的操作设置路由“示例”,尝试使用示例操作调用

    $.ajax({
        url:serviceUrl+'/sample' ( or your action route),
        type:'POST',
        data:['a','b','c'],
        contentType:'application/json',
        dataType:'JSON'
    }).done(function(data){
        console.log(data);
    }).fail(function(data){
        console.log(data);
    });
    

    【讨论】:

      猜你喜欢
      • 2019-03-30
      • 1970-01-01
      • 1970-01-01
      • 2015-09-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-07
      • 1970-01-01
      相关资源
      最近更新 更多