我正在尝试将字符串数组传递给 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
参数仍然为空。我应该更改什么来传递字符串数组作为参数。
如果您需要通过
HttpGet
发送数据,您可以添加 [FromUri]
您可以按如下方式编辑控制器操作,并且您的 JavaScript 应按原样工作:
[HttpGet]
public string HireRocco([FromUri] string[] hitList)
{
string updateList = string.Empty;
return updateList;
}
删除
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) {
}
});
首先我建议你使用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
}
}
来自问题:如何使用 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