或許,不少人都會認爲已經學過了的技術不必再回顧,也懶得去實踐...這種心理問題我想你應該也有過,懶惰是人之本性嘛,至少我曾經是。javascript
好了,木木就讓小夥伴們來瞧瞧我最近學到的東西,學的很差不要見怪喲。前端
註解:知識源於積累,分享。但願看到木木的獻醜你們不要驚慌,木木會更快更正.....java
Ajax:jquery
Ajax到底有什麼做用叻?web
1.經過無刷新頁面與服務器交互數據來提升客戶端體驗;ajax
2.經過其異步調用機制增長web程序性能,下降服務器壓力;編程
首先,Ajax並非很新的技術,它是一系列技術的整合。能夠實現局部刷新頁面。 (改變頁面中某個塊的值,不會刷新整個頁面)。數組
Ajax的組成:Asynchronous JavaScript And XML。瀏覽器
註解:緩存
Asynchronous:異步。
JavaScript:解釋性語言。 XML:數據結構語言。
那麼Ajax同步和異步呢?
同步:客戶端腳本在未接受到服務器端響應以前,會一直等待,直到接受響應後纔會繼續執行。 異步:客戶端代碼和服務器端同時執行。
下面咱們來初步瞭解Ajax的技術原理:
服務器
↓↑
XMLHttpRequest (XMLHttpRequest:JavaScript原生對象的一個請求。 返回true 和false)
↓↑
JavaScript (客戶端腳本) ↓
------ -----
↓ ↓
CSS DOM (CSS樣式)
-----------------------------------------------------------------------------------------------
* [將註冊帳號給服務器端,讓服務器驗證這個帳號是否已經註冊,而後給客戶端提示信息]*
***** Ajax同步請求 ***** ***** ------>發送請求
***** - ->
***** -客戶端 -> true,false 服務器端 -
- <- -
- <------------------- -
[[客戶端接受 - 返回響應以後 - 會根據不一樣的 - 返回結果提示 - 不一樣的信息。]]
-----------------------------------------------------------------------------------------------
以上咱們對Ajax有那麼一丁點兒的初步認知後,那麼咱們即將步入Ajax的發展歷史:
XMLHttpRequest是一種用於在 Web 瀏覽器和 Web 服務器間傳輸數據消息的 JavaScript API。它支持瀏覽器使用 HTTP POST
(將數據傳到服務器)或 GET
請求(從後臺服務器訪問數據)。
該 API 是大多數 Ajax 交互的核心,也是現代 Web 開發的一項基本技術。
XMLHttpRequest最早出如今IE5種,最初是由 Alex Hopmann 編寫的 Microsoft ® ActiveX® 控件,建立 XHR 是爲了處理 Microsoft Outlook® Web Access,
旨在解決高級(當時)前端接口和 Microsoft Exchange Server 間的交互。W3C標準支持。。。。(因爲本人之前太懶,目前就這麼多)
請求:有四種方式
1. open()
發起服務器鏈接。能夠帶參數:
method
。將要使用的 HTTP 方法(能夠是 POST
或者 GET
)url
。請求的 URLasync
。 可選布爾參數,代表請求是否異步(該參數的默認值爲 Ture)user
。一個可選用戶名,供認證使用password
。一個可選密碼,供認證使用 2. setRequestHeader()
設置請求報頭,帶有兩個參數:報頭及其相關值
3.send()
發送請求。該方法帶有一個可選參數,包含 POST
請求的正文
4.abort()
停止請求
status
。請求的標準 HTTP 狀態(例如,成功請求將返回 200
)statusText
。包括 Web 服務器返回的完整響應字符串,其中包括響應文本(例如,304 Not Modified
)getResponseHeader()
。返回特定報頭內容;請求報頭名稱是其唯一參數getAllResponseHeaders()
。返回全部響應報頭的文本responseText
。響應文本的字符串表示responseXML
。響應文本的 XML 表示,一個包含 DOM 和全部相關 DOM 方法的文檔片斷
readyState
實例化完成後,XMLHttpRequest
對象有 5 種狀態,使用如下值表示:
open()
方法已成功調用
Ajax框架簡介:
AJAX模式
在一個發送請求到服務端的應用中,必須包含請求順序、優先級、超時響應、錯誤處理及回調,其中許多元素已經在Web服務中包含了,
就像如今的SOA。AJAX開發人員擁有一個完整的系統架構知識。同時,隨着技術的成熟還會有許多地方須要改進,特別是UI部分的易用性。
AJAX開發與傳統的CS開發有很大的不一樣。這些不一樣引入了新的編程問題,最大的問題在於易用性。
因爲AJAX依賴瀏覽器的JavaScript和XML,瀏覽器的兼容性和支持的標準也變得和JavaScript的運行時性能同樣重要了。
這些問題中的大部分來源於瀏覽器、服務器和技術的組合,所以必須理解如何才能最好的使用這些技術。
[(注:Ajax模式思路介紹摘自百度文庫)]
瀏覽器框架 [這裏小編就介紹做用就好了,至於詳細的要靠你們去研究了 引用自百度文庫]
Dojo
Flash/JavaScript集成包
Google AJAXSLT
基於Google Maps的工做,Google AJAXSLT是使用XPath的XSL轉換(XSLT)的JavaScript實現。XSLT能夠把XML文檔轉換爲其餘語言,
如HTML。AJAXSLT容許使用JavaScript在瀏覽器上直接完成這些轉換。
libXmlRequest
RSLite
RSLite是遠程腳本的一個實現,由Brent Ashley編寫。從技術上講,它沒有利用做爲Ajax核心的XMLHttpRequest對象,可是獲得了更普遍的瀏覽器支持。
若是你須要支持原來的瀏覽器,而這些瀏覽器不支持XMLHttpRequest對象,就能夠試試RSLite。RSLite是至關輕量級的,已從2000年發展至今 。
SACK
sarrisa
XHConn
jquery
服務器框架 [部分引用自百度文庫]
CPAINT
Sun的BluePrints小組一直忙於將Ajax歸入他們的解決方案目錄(Solutions Catalog)中。S
olutions Catalog包括一些很好的文檔,描述瞭如何使用基本Ajax,如何實現自動完成,如何建立一個進度條以及如何驗證表單。
它還包括JavaServer Faces組件。
Ajax Net
Ajax Net之於Microsoft .NET就至關於SAJAX、DWR和SWATO之於Java。利用AjaxNet,你能從JavaScript客戶調用.NET方法。
AjaxNet包括一個DLL,能夠與VB.NET或C#一同使用。
AjaxNet的文檔很好地展現了針對各類場景的解決方案,並且能獲得相關的源代碼。不過,AjaxNet的許可協議很不明確。
Microsoft的Atlas項目
Ruby on Rails
最後木木帶你們進入一些建立實例代碼:
<script type="text/javascript">
1.建立原生對象XMLHttpRequest
2.設置回調函數
3.初始化對象
4.發送請求
//建立原生態對象 XMLHttpRequest
function createXMLHttpRequest(){ //針對IE5,IE6瀏覽器
if(window.ActiveXObject){
return new ActiveXObject("Microsoft.XMLHTTP");
}else if(window.XMLHttpRequest){ //其他的瀏覽器
return new XMLHttpRequest; }
}
//建立Ajax執行方法
$(function(){
$("使用者屬性名稱").對應事件(function(){
//一、建立原生對象XMLHttpRequest
var xhr = createXMLHttpRequest();
//二、設置回調函數
xhr.onreadystatechange = function(){
//判斷狀態 是否正常加載完畢而且數據完成加載
if(xhr.readyState == 4 && xhr.Status == 200){
document.getElementById('加載到的容器名稱').innerHTML = xhr.responseText;
}
}
//三、初始化對象
xhr.open("提交方式","路徑",true/false);
//四、發送請求
xhr.send("指定請求的路徑(服務器端的頁面)");
});
});
</script>