在jquery 1.5 ajax中是否使用新的url参数

时间:2019-05-22 12:28:55

标签: jquery ajax

我从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对象的属性是否有任何优点(或缺点)?

1 个答案:

答案 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的对象更方便。