【问题标题】:jQuery.Ajax makes the wrong request with array datajQuery.Ajax 使用数组数据发出错误请求
【发布时间】:2010-04-23 01:41:36
【问题描述】:

我有以下数组:

var idParam = ["1","2","3"];

我想使用jQuery.ajax 将这些数据作为请求发送,我在做什么:

        $.ajax({
        type: "GET",
        url: "Services/GetInfo.ashx",
        data: { "id": idParam },
        contentType: "application/text",
        dataType: "json",
        success: function(result)
        {
...
        },
        error: function(XMLHttpRequest, textStatus, errorThrown)
        {
            ...
        }
});

但结果我有以下丑陋的字符串:?id[]=1&id[]=2&id[]=4(实际上它更丑陋:id%5B%5D=1&id%5B%5D=2&id%5B%5D=4)。

如何获取正常的字符串,例如:id=1&id=2&id=4 ?? 谢谢

【问题讨论】:

  • 它并不难看...应该是这样...如果id=1&id=2&id=4,这会将所有 id 覆盖为 4...就像您只是传递 id=4
  • @Reigel - 这完全取决于您的服务器如何解释 GET 请求。
  • 其实不一定。相关的 RFC 不禁止多个键具有相同的名称;它真的取决于后端处理器。在这个例子中,ASP 会给你一个数组——id=[1,2,4]。见stackoverflow.com/questions/1746507/…
  • @Nick 是的!但它仍然会以一个值结束,不是吗??
  • @Reigel - 答案是也许,在我所知道的每个主要平台上,如果你愿意,你可以手动解析请求字符串,只是真的取决于什么服务器在做什么。不过,平台提供的易于访问的类可能无法处理它(即使它们应该根据规范)。

标签: jquery ajax arrays


【解决方案1】:

我假设这是使用 jQuery 1.4 - 您需要为 $.ajax() 使用 traditional: true 参数

或者你可以全局设置:(from $.param() docs)

从 jQuery 1.4 开始,$.param() 方法递归地序列化深层对象以适应现代脚本语言和框架,例如 PHP 和 Ruby on Rails。您可以通过设置 jQuery.ajaxSettings.traditional = true; 来全局禁用此功能。

【讨论】:

猜你喜欢
  • 2013-12-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-06
相关资源
最近更新 更多