【发布时间】:2018-08-29 09:18:45
【问题描述】:
在我的 javascript 应用程序中,我尝试使用 jQuery Ajax 在 GET 请求中将字符串数组以及其他参数传递给 ASP.NET Web API REST 服务。 示例网址如下:
http://my.services.com/products?userId=1abc&id=1&id=2&id=3
Web API 方法的签名:
[HttpGet("products")]
public IActionResult GetProducts(string userId, int[] id)
如果我使用 Postman 尝试请求,则参数绑定可以正常工作。在 Javascript 应用程序中,我尝试了几种解决方案,但都没有成功。代码如下:
let data = {
'userId': '1abc'
'id': [1,2,3]
}
$.ajax({
type: 'get',
url: 'http://my.services.com/products',
data: data,
crossDomain: true, //CORS
cache: false,
}
在这种情况下,URL 变为:
http://my.services.com/products?userId=1abc&id%5B%5D=1&id%5B%5D=2&id%5B%5D=3
由于在解析结果中不是使用id作为key,而是使用id[],因此将字符[]编码为%5B和%5D。
即使我使用此代码也没有运气:
let data = {
'userId': '1abc'
'id': JSON.stringify([1,2,3])
}
或(如answer所示)
let data = {
'userId': '1abc'
'id[]': [1,2,3]
}
请记住,对于其他调用,上面的代码 JQuery AJAX 代码可以正常工作。
【问题讨论】:
标签: jquery arrays ajax serialization get