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

问题描述 投票:0回答:4

我正在尝试将字符串数组传递给 Web Api 方法,该方法接受字符串数组作为参数。下面是我的 Web Api 方法

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

我的阿贾克斯

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
参数仍然为空。我应该更改什么来传递字符串数组作为参数。

javascript jquery asp.net ajax asp.net-web-api
4个回答
4
投票

如果您需要通过

HttpGet
发送数据,您可以添加
[FromUri]
您可以按如下方式编辑控制器操作,并且您的 JavaScript 应按原样工作:

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

0
投票

删除

contentType: false
然后将
processData
设置为 true,以便它可以附加您的 url 的 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) {
    }
});

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

0
投票

来自问题:如何使用 JQuery AJAX 在 GET 请求中将数组作为查询字符串传递

答案:

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

$.ajax({
    url: uri,
    type: 'GET',
    data: { hitList : hitList },
    traditional: true,
    success: function (data) {
    },
    error: function (data) {
    }
});

需要设置

traditional: true

通过.Net 8.0

© www.soinside.com 2019 - 2024. All rights reserved.