Ajax 知識入門從這裡開始【簡約版,後期重新歸納整理】
- 2019 年 10 月 10 日
- 筆記
基本概念
Ajax(Asynchronous JavaScript and XML) 非同步的 JavaScript 和 XML
什麼是非同步呢?
非同步和同步往往是同時被提到的兩個概念,這兩者都是基於客戶端和伺服器端相互通訊的基礎上
- 同步:客戶端必須的等待伺服器端給予的響應,在此期間不能進行其他操作
- 非同步:與同步不同,客戶端不需要等待伺服器響應,在此期間可以進行任何操作
簡單概述流程:
同步:發送請求 → 等待伺服器處理 → 返回
非同步:事件觸發 → 伺服器處理 (不等待)→ 處理結束
好處
Ajax 就是一種可以在無需重新載入整個網頁的情況下 就可以實現與客戶端與伺服器的非同步通訊
往簡單了說就是:不用刷新整個網頁,就能修改網頁局部內容
在之前的開發中,如果每一次局部的小修改都進行頁面刷新,這顯然對性能會有所降低,而且用戶正在執行的操作也會中斷
基本流程

上面圖片中基本上所有內容我們都是有一定認識的,只有 XMLHttpRequest 我們似乎是第一次見,那麼這又是什麼呢?
XMLHttpRequest 是Ajax的核心,是一個非常重要的對象,我們下面的程式中會反覆的用到
XMLHttpRequest 基本原理
Ajax中最大的特點 就是請求會被非同步對象XMLHttpRequest進行封裝,然後再發送到伺服器,接著伺服器以流的形式將數據返回給瀏覽器
也正是因為伺服器返回的數據是通過流的形式發送的,XMLHttpRequest對象會不停的監聽伺服器,且得到伺服器數據,所以瀏覽器不需要刷新就可以獲取伺服器端的數據
基本實現
JS實現方式(了解即可)
1、創建核心對象
var xmlhttp; if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari xmlhttp=new XMLHttpRequest(); } else {// code for IE6, IE5 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); }2、建立連接
xmlhttp.open("GET","ajaxServlet?username=tom",true);- 參數1:請求方式(Get、Post)
- get:請求參數在URL後拼,send方法為空
- post:請求參數在send方法中寫
- 參數2:URL
- 參數3:true-非同步,false-同步 3、發送請求
xmlhttp.send();
4、獲取並處理伺服器的響應結果
//方式:xmlhttp.responseText //時間:響應成功後 //onreadystatechange 對象就緒狀態改變 xmlhttp.onreadystatechange=function() { //判斷readyState就緒狀態是否為4,判斷status響應狀態碼是否為200 if (xmlhttp.readyState==4 && xmlhttp.status==200) { //獲取伺服器的響應結果 var responseText = xmlhttp.responseText; alert(responseText); } }jQuery實現方式
$.ajax({ url:"ajaxServlet1111" , type:"POST" , data:{"username":"admin","age":20}, success:function (data) { alert(data); }, error:function () { alert("出錯啦...") }, dataType:"text" });- url:請求路徑
- type:請求方式
- date:請求參數,上例中等價於,
data: "username=admin&age=20" - success:響應成功後的回調函數
- error:果請求響應出現錯誤,會執行的回調函數
- dateType:設置接受到的響應數據的格式
發送get請求——$.get()
語法:$.get(url, [data], [callback], [type])
- url:請求路徑
- data:請求參數
- callback:回調函數
- type:響應結果的類型
發送post請求——$.post()
語法:$.post(url, [data], [callback], [type])
- url:請求路徑
- data:請求參數
- callback:回調函數
- type:響應結果的類型
結尾:
如果文章中有什麼不足,或者錯誤的地方,歡迎大家留言分享想法,感謝朋友們的支援!
如果能幫到你的話,那就來關注我吧!
如果您更喜歡微信文章的閱讀方式,可以關注我的公眾號
如果您更加喜歡PC端的閱讀方式,可以訪問我的個人部落格
域名:www.ideal-20.cn
在這裡的我們素不相識,卻都在為了自己的夢而努力 ❤ 一個堅持推送原創Java技術的公眾號:理想二旬不止