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。
答
这似乎不再是— a ticket on the jQuery tracker表明,这是在版本更新添加和jQuery现在合并的对象,而不是替代的情况下,默认(谢谢@Quincy)。
$.ajaxSetup()
设置您的ajax请求的默认值。您在请求方法中设置的任何选项都会覆盖这些默认值,而不会合并它们。你实际上覆盖
{ persist: true }
与
{ name: "foo" }
这似乎不再是— a ticket on the jQuery tracker表明,这是在版本更新添加和jQuery现在合并的对象,而不是替代的情况下,默认(谢谢@Quincy)。
答
由于documentation表示data
选项转换为查询字符串并附加到GET请求的URL。
+0
我认为这里的文档不太清楚。对于POST请求,'data'应该转换为查询字符串并通过POST主体发送。 – 2010-03-30 07:42:30
尽管这个问题已经一年多了,但合并工作已经开始。只要有人在阅读本文,请在此留言。 @see http://bugs.jquery.com/ticket/3387 – Quincy 2011-07-13 06:26:07
我试过在ajaxSetup中使用serializeArray合并数据中的post参数,但是这会覆盖在axaxSetup中定义的参数 http://stackoverflow.com/questions/ 21501224 /定义全局的Ajax-后PARAM - 合并与 - 不同-请求 – 2014-02-01 20:45:02