【问题标题】:Does jQuery ajaxSetup method not work with $.get or $.post?jQuery ajaxSetup 方法是否不适用于 $.get 或 $.post?
【发布时间】:2010-03-30 04:55:38
【问题描述】:

当调用$.post$.get 时,jQuery $.ajaxSetup 方法是否不尊重选项哈希中的data 字段?

例如,我可能有这样的代码:

$.ajaxSetup({ data: { persist: true } });

然后,要发送一个 POST 请求,我会这样称呼:

$.post("/create/something", { name: "foo" });

我期待实际的 POST 数据如下所示:

{
  persist: true,
  name: "foo"
}

$.post 发送的唯一数据是{ name: "foo" }。有没有办法获得预期的行为?我正在使用 jQuery 1.4.1。

【问题讨论】:

    标签: javascript jquery ajax


    【解决方案1】:

    $.ajaxSetup() 为您的 ajax 请求设置默认值。您在请求方法中设置的任何选项都将覆盖这些默认值,而不是合并它们。你实际上是在覆盖

    { persist: true }
    

    { name: "foo" }
    


    这似乎不再是这种情况——a ticket on the jQuery tracker 建议这是在版本更新中添加的,jQuery 现在合并对象而不是替换默认值(感谢@Quincy)。

    【讨论】:

    【解决方案2】:

    正如documentation 所说,data 选项被转换为查询字符串并附加到 GET 请求的 URL。

    【讨论】:

    • 我认为这里的文档不清楚。对于 POST 请求,data 应转换为查询字符串并通过 POST 正文发送。
    猜你喜欢
    • 2012-05-21
    • 1970-01-01
    • 1970-01-01
    • 2015-06-03
    • 2017-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-16
    相关资源
    最近更新 更多