jQuery ajaxSetup方法不能与$ .get或$ .post一起使用吗?

问题描述:

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

例如,我可能有这样的代码:我期待实际的POST数据看起来像

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

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

然后,发送POST请求,我会叫这个这样的:

{ 
    persist: true, 
    name: "foo" 
} 

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

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

{ persist: true } 

{ name: "foo" } 


这似乎不再是— a ticket on the jQuery tracker表明,这是在版本更新添加和jQuery现在合并的对象,而不是替代的情况下,默认(谢谢@Quincy)。

+2

尽管这个问题已经一年多了,但合并工作已经开始。只要有人在阅读本文,请在此留言。 @see http://bugs.jquery.com/ticket/3387 – Quincy 2011-07-13 06:26:07

+0

我试过在ajaxSetup中使用serializeArray合并数据中的post参数,但是这会覆盖在axaxSetup中定义的参数 http://stackoverflow.com/questions/ 21501224 /定义全局的Ajax-后PARAM - 合并与 - 不同-请求 – 2014-02-01 20:45:02

由于documentation表示data选项转换为查询字符串并附加到GET请求的URL。

+0

我认为这里的文档不太清楚。对于POST请求,'data'应该转换为查询字符串并通过POST主体发送。 – 2010-03-30 07:42:30