我从http://api.jquery.com/jQuery.ajax/#jQuery-ajax-url-settings中注意到,jquery
v1.5及更高版本允许我们使用其中任何一个
jQuery.ajax( url [, settings ] )
或者只是
jQuery.ajax( [ settings ] )
,然后在settings.url
中指定URL。将url指定为单独的参数而不是settings
对象的属性是否有任何优点(或缺点)?
答案 0 :(得分:0)
将ajax模块重写为1.5:https://blog.jquery.com/2011/01/31/jquery-15-released/
在jquery $.ajax
方法的顶部是此检查:
// If url is an object, simulate pre-1.5 signature
if ( typeof url === "object" ) {
options = url;
url = undefined;
}
因此没有功能上的差异,因为它将处理这两种方法(假设url
中的(url,settings)
是一个字符串)。
进一步,它确实:
s.url = url || s.url;
因此,如果同时提供设置,则设置外部的url将覆盖其中的一个。
这允许您创建一个可重复使用的常规ajax设置对象,以与不同的url一起使用。
此处的键进一步向下:
s = jQuery.ajaxSetup( {}, options )
这会将先前对$.ajaxSetup
的所有调用应用到选项,这意味着您可以在$.ajaxSetup
中设置所有ajax设置,然后不需要将它们传递到$.ajax
是一个简单的网址,例如:
$.ajaxSetup({
data: { html: "<b>ok</b>" },
method: "POST"
});
// now call $.ajax with just the url
$.ajax("/echo/html")
.done(function(h) { $("#o3").html(h) });
如果没有单独的字符串url参数,则必须为
$.ajax({ url: "..." })
此小提琴对此进行了演示(使用小提琴的/echo/html
进行ajax调用)
https://jsfiddle.net/2mnr8ok5/
将url指定为单独的参数而不是设置对象的属性是否有优势(或劣势)?
如果您要传递设置对象并且它具有url,则调用没有好处
$.ajax(settings.url, settings);
如果您使用$.ajaxSetup
并只是更改url,则以字符串形式传递比使用仅包含url的对象更方便。