是否无法使用GET方法发送数组?

时间:2015-04-06 09:57:45

标签: arrays ajax json getmethod

在服务器端,我有一个方法接受一个整数数组并返回一个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数据?如果没有,那么我的代码有什么问题?

2 个答案:

答案 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) },
...