我从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对象的属性是否有任何优点(或缺点)?
发布于 2019-05-22 21:13:03
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,settings)中的url是字符串)。
再往下看,它确实是:
s.url = url || s.url;因此,如果两者都提供,则设置外的url将覆盖设置内的url。
这允许您创建一个通用的、可重用的ajax设置对象,以便与不同的urls一起使用。
这里的关键是进一步向下:
s = jQuery.ajaxSetup( {}, options )这会将之前对$.ajaxSetup的任何调用应用到选项中,这意味着您可以在$.ajaxSetup中设置所有ajax设置,然后它们不需要传递给$.ajax,后者可以是一个简单的url,例如:
$.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: "..." })这在这个fiddle中得到了演示(它使用fiddle的/echo/html进行ajax调用)
https://jsfiddle.net/2mnr8ok5/
将url指定为单独的参数而不是设置对象的属性是否有任何优点(或缺点)?
如果您正在传递一个设置对象,并且它有一个url,那么调用
$.ajax(settings.url, settings);如果您使用的是$.ajaxSetup,并且只是更改了url,那么作为字符串传递将比创建一个只包含url的对象更方便。
https://stackoverflow.com/questions/56256835
复制相似问题