将字符串数组作为jquery ajax中的数据传递给web api

时间:2015-03-06 08:45:33

标签: javascript jquery asp.net ajax asp.net-web-api

我正在尝试将字符串数组传递给Web Api方法,该方法接受一个字符串数组作为参数。 Bellow my Web Api方法

    [HttpGet]
    public string HireRocco(string[] hitList)
    {
        string updateList = string.Empty;
        return updateList;
    }

我的ajax

var uri = 'http://localhost:16629/api/AssassinApi/HireRocco',
hitList = ['me', 'yourself'];

$.ajax({
    url: uri,
    type: 'GET',
    data: { hitList : hitList },
    cache: false,
    dataType: 'json',
    async: true,
    contentType: false,
    processData: false,
    success: function (data) {
    },
    error: function (data) {
    }
});

上面的ajax成功点击了HireRocco方法,但hitList param仍为null。我应该更改什么来传递一个字符串数组作为参数。

3 个答案:

答案 0 :(得分:3)

如果您需要通过HttpGet发送数据,可以添加[FromUri],您可以按照以下方式编辑控制器操作,并且您的JavaScript应该按原样运行:

[HttpGet]
public string HireRocco([FromUri] string[] hitList)
{
    string updateList = string.Empty;
    return updateList;
}

答案 1 :(得分:0)

删除contentType: false,然后将processData设置为true,这样它就可以将postData附加到您的网址,因为这是get请求的工作方式,或者您必须更改api以接受通过设置的POST请求标题。

$.ajax({
    url: uri,
    type: 'GET',
    data: { hitList : hitList },
    cache: false,
    dataType: 'json',
    async: true,
    processData: true,
    success: function (data) {
        console.log(data);
    },
    error: function (data) {
    }
});

答案 2 :(得分:0)

首先,我建议你使用POST而不是GET。 创建一个javascript数组。推送其中的数据。使用JSON.Stringify将其发送到web api操作方法,然后处理进一步的逻辑。

在web api中创建一个模型变量..并创建一个列表对象..

以下是代码..

的Javascript

var demoarray=[];
demoarray.push({"test1":"hi", "test2":"hello"}); //test1 and test2 are model variable names in web api and hi and hello are their values

你可以在for循环中重复这个过程,或者添加多个值。

 $.ajax({
      url:"http://localhost..",
      type: "POST",
      data: JSON.Stringify(demoarray),
      contentType: "application/json",
      success: function(data)
               {
               },
      error: function(data)
             {
             }
       });

WEB API代码 创建一个模型类和两个属性

public string test1 {get; set;}
public string test2 {get; set;}

控制器代码

[Httppost]
public void actionmethod(List<modelclass> obj)
{
  int i=0;
  for(i=0; i<obj.count; i++)
  {
    //your logic
  }
}