3

在服务器端,我有一个接受整数数组并返回 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时,服务器端的参数为空。如果我将方法从 更改GETPOST,那么它可以工作。这是否意味着我无法使用 GET 请求发送数组或任何 Json 数据?如果不是,那么我的代码有什么问题?

4

2 回答 2

2

您可以将数组作为字符串发送:

...
data: { categories: JSON.stringify(categories) },
...
于 2015-04-06T10:03:04.630 回答
2

GET 请求没有消息正文,因此您不能将 GET 与contentType: 'application/json; charset=UTF-8'. 当您在 GET 请求中使用 json 时,浏览器会破坏您的 json 并将每个 josn 键值附加到 url(即使您使用JSON.stringify方法)。因此,要使用 json 和 REST,您需要使用 POST 方法。

于 2015-04-06T10:06:20.190 回答