Ajax 的底層實現都是瀏覽器提供的,所以任何基于 api 上面的框架或者庫,都只是說對于功能的靈活與兼容維護性做出最優的擴展。
Ajax 請求的流程:
1、通過 new XMLHttpRequest 或其它的形式(指IE)生成 ajax 的對象 xhr。 2、通過 xhr.open(type, url, async, username, password) 的形式建立一個連接。 3、通過 etRequestHeader 設定 xhr 的請求頭部(request header)。 4、通過 send(data) 請求服務器端的數據。 5、執行在 xhr 上注冊的 onreadystatechange 回調處理返回數據。
這幾步之中,我們開發者可能會遇到的問題
1、跨域 2、json的格式 3、dataType 4、AJAX亂碼問題 5、頁面緩存 6、狀態的跟蹤 7、不同平臺兼容
jQuery 主要就是解決上面這問題,之后就在這個基礎之上進行擴展,jQuery2.0.3 版的 Ajax 部分源碼大概有 1200 多行,主要針對 ajax 的操作進行了一些擴展,使之更加靈活,jQuery 在 1.5 中對 Ajax 模塊的重寫,增加了幾個新的概念,Ajax 模塊提供了三個新的方法用于管理、擴展 Ajax 請求,分別是:
前置過濾器 jQuery. ajaxPrefilter 請求分發器 jQuery. ajaxTransport 類型轉換器 ajaxConvert
除此之后還重寫了整個異步隊列處理,加入了 deferred,可以將任務完成的處理方式與任務本身解耦合,使用 deferreds 對象,多個回調函數可以被綁定在任務完成時執行,甚至可以在任務完成后綁定這些回調函數。這些任務可以是異步的,也可以是同步的。
比如之前提到的:
請驗證,完成請求
由于請求次數過多,請先驗證,完成再次請求
打開微信掃碼自動綁定
綁定后可得到
使用 Ctrl+D 可將課程添加到書簽
舉報