【问题标题】:Is it not possible to send an array with GET method?不能用 GET 方法发送数组吗?
【发布时间】:2015-06-10 17:10:57
【问题描述】:

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

【问题讨论】:

    标签: arrays ajax json getmethod


    【解决方案1】:

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

    ...
    data: { categories: JSON.stringify(categories) },
    ...
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 我完全失去了理智。就在 2 天前,我能够通过 GET 请求做到这一点。现在唯一可行的选项是带有 POST 方法的选项。更有趣的是,contentType设置为application/json时不起作用
      猜你喜欢
      • 2012-05-11
      • 2018-07-18
      • 2011-07-28
      • 2019-06-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多