Ajax 簡介:
AJAX即“Asynchronous Javascript And XML”(異步JavaScript和XML),是指一種創建交互式網頁應用的網頁開發技術。
AJAX = 異步 JavaScript和XML(標準通用標記語言的子集)。
AJAX 是一種用于創建快速動態網頁的技術。
通過在后臺與服務器進行少量數據交換,AJAX 可以使網頁實現異步更新。這意味著可以在不重新加載整個網頁的情況下,對網頁的某部分進行更新。
傳統的網頁(不使用 AJAX)如果需要更新內容,必須重載整個網頁頁面。
存在問題
如果使用Firefox等瀏覽器訪問RMS網站時,我們可能會發現頁面之間的切換是通過AJAX異步請求實現的,同時頁面的URL不會發生改變,雖然可以通過頁面上的按鈕通過AJAX異步請求實現回退刷新,但是對于瀏覽器前進和后退不能支持,每當刷新與后退之后,頁面都會退到最開始的歡迎頁面。AJAX可以實現頁面的局部刷新,可以做到非常好的數據加載效果,給用戶帶來非常良好的體驗,但是AJAX不能在瀏覽器的歷史會話中保留記錄,當你點開一個頁面,AJAX各種數據加載非??旖?,例如一個列表頁面可以用異步加載來翻頁,但是如果用戶一不小心刷新了頁面,那么頁碼就得重新開始計算,一旦用戶改變了會話狀態(瀏覽器的前進、后退、刷新),那么AJAX就會丟失相關的數據。
傳統的AJAX存在如下的問題:
1、可以無刷新改變頁面內容,但無法改變頁面URL
2、不能支持通過網址直接訪問系統某一模塊,必須進過點按操作
3、回退、刷新必須開發人員自己第一,既給開發人員增加了工作量,又不符合用戶習慣
4、進而瀏覽器引入了onhashchange的接口,不支持的瀏覽器只能定時去判斷hash是否改變
5、但這種方式對搜索引擎很不友好
使用技術
為了解決傳統ajax帶來的問題,HTML5里引入了新的API,即:history.pushState,history.replaceState
可以通過pushState和replaceState接口操作瀏覽器歷史,并且改變當前頁面的URL。
pushState是將指定的URL添加到瀏覽器歷史里,replaceState是將指定的URL替換當前的URL。
history.pushState(state, title, url)
將當前URL和history.state加入到history中,并把新的state和URL添加到當前。不會造成頁面刷新。
state:與要跳轉到的URL對應的狀態信息。
title:標題(現在是被忽略,未作處理)。
url:要跳轉到的URL地址,不能跨域。
history.replaceState(state, title, url)
history.replaceState()操作類似于history.pushState(),不同之處在于replaceState()方法會修改當前歷史記錄條目而并非創建新的條目。
state:與要跳轉到的URL對應的狀態信息。
新聞熱點
疑難解答
圖片精選