在服务器端,我有一个方法接受一个整数数组并返回一个Json对象:
public JsonResult GetCorrespondingOfficers(int[] categories){
//use `categories`
return Json(model,JsonRequestBehavior.AllowGet);
}
我在客户端上有以下脚本:
var categories=[1,2,3];
$.ajax({
url: url,
type: 'GET',
data: { categories: categories },
contentType: 'application/json; charset=UTF-8',
dataType: 'json',
success: function (data) { alert('Success');},
async: false
});
当我运行上面的代码时,我在服务器端获取参数categories
的null。如果我将方法从GET
更改为POST
,那么它可以正常工作。这是否意味着我无法使用GET请求发送数组或任何Json数据?如果没有,那么我的代码有什么问题?
答案 0 :(得分:2)
GET请求没有邮件正文,因此您无法对contentType: 'application/json; charset=UTF-8'
使用GET。当您在GET请求中使用json时,浏览器会破坏您的json并将每个josn键值附加到url(即使您使用JSON.stringify
方法)。因此,对于使用json和REST,您需要使用POST方法。
答案 1 :(得分:1)
您可以将数组作为字符串发送:
...
data: { categories: JSON.stringify(categories) },
...