使用ajax将字符串数组发送到WebAPI

时间:2017-03-21 12:50:10

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

我需要向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。

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

感谢。

2 个答案:

答案 0 :(得分:0)

您设置路线&#39;示例&#39;为了您的行动,尝试使用示例操作调用

$.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);
});

答案 1 :(得分:0)

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

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);
});