jQuery ajax:一些細節以及主函數擴充出來的方法

來源:互聯網
上載者:User

上一篇文章,講解了jQuery.ajax函數。這篇文章將其他一些細節補充完。下一篇文章則開始講解,jQuery 是如何將script動態載入、XMLHttpRequest、JSONP一起封裝進jQuery.ajax裡的。

jQuery.ajaxSetup

我們可以從主函數看出,參數是通過jQuery.ajaxSetup產生的:

// 通過jQuery.ajaxSetup改造參數對象

s = jQuery.ajaxSetup( {}, options ),

那麼 jQuery.ajaxSetup在幹些什麼呢?

jQuery.ajaxSetup = function( target, settings ) {    // 如果有參數    return settings ?            // 建立一個設定對象,先將jQuery.ajaxSettings的屬性放進去,        // 然後將參數也放進去        ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :            // 並將設定對象的屬性放進jQuery.ajaxSettings對象裡        ajaxExtend( jQuery.ajaxSettings, target );};

ajaxExtend

ajaxExtend和jQuery.extend有一些不同,避免有些不需要深複製的屬性進行 深複製。

function ajaxExtend( target, src ) {    var key, deep,        flatOptions = jQuery.ajaxSettings.flatOptions || {};            // 遍曆src對象中的所有key    for ( key in src ) {        // 如果值不是undefined        if ( src[ key ] !== undefined ) {            // 判斷是不是不需要深複製的,如果不需要深複製,將屬性直接寫進target,            // 否則寫進deep裡存起來            // 我們可以從jQuery.ajaxSettings.flatOptions看到,            // 實際上不需要深複製的是url和context            ( flatOptions[ key ] ? target : ( deep || (deep = {}) ) )[ key ] = src[ key ];        }    }            // 如果deep不是undefined,證明需要深複製    if ( deep ) {        // 開始深複製        jQuery.extend( true, target, deep );    }        // 返回target    return target;}

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.