ajax同步和异步的差异
一、web中的同步和異步:
(1)同步請求:順序處理,即當我們向服務器發出一個請求時,在服務器沒返回結果給客戶端之前,我們要一直處于等待狀態直至服務器將結果返回到客戶端,我們才能執行下一步操作。例如普通的B/S模式就是同步請求(注:B/S模式 也即服務器與瀏覽器通信主要采用HTTP協議;通信方式為“請求——響應”,瀏覽器發出請求;服務器做出響應。)
(2)異步請求:并行處理,當我們向服務器發出一個請求時,在服務器沒返回結果之前,我們還是可以執行其他操作。例如AJAX技術就是異步請求。
二、ajax中的同步與異步:
不要懷疑,在ajax中其實也存在著同步請求的選項,下面就讓我們重點來說說這塊的內容。各位小伙伴搬好小板凳坐好了嗎?咱們要開始講解了哈:
ajax的open()方法
用法:open(http-method,url,async,userID,password)
后面是帳號和密碼,在禁止匿名訪問的http頁面中,需要用戶名和口令。
ajax.open方法中,第3個參數是設同步或者異步。prototype等js類庫一般都默認為異步,即設為true。 先說下同步的情況下,js會等待請求返回,獲取status。不需要onreadystatechange事件處理函數。 而異步則需要onreadystatechange事件處理,且值為4再正確處理下面的內容。
首先看看異步處理方式。
其中async是一個布爾值。如果是異步通信方式(true),客戶機就不等待服務器的響應;如果是同步方式(false),客戶機就要等到服務器返回消息后才去執行其他操作。我們需要根據實際需要來指定同步方式,在某些頁面中,可能會發出多個請求,甚至是有組織有計劃有隊形大規模的高強度的request,而后一個是會覆蓋前一個的,這個時候當然要指定同步方式:Flase。
請求方式
GET
最為常見的HTTP請求,普通上網瀏覽頁面就是GET。GET方式的參數請求直接跟在URL后,以問號開始。(JS中用window.location.search獲得)。參數可以用encodeURIComponent進行編碼,使用方式:
1
var EnParam = encodeURIComponent(param);
URL只支持大約2K的長度,即2048字符數;
使用GET進行AJAX請求時候會緩存導致出現的頁面不是正確的,一般方法加random參數值;
ajax.send(null)。
POST
向服務器提交數據用到。
需要將form表單中的值先取出轉換成字符串,用&符號連接,(同GET傳參數一樣);
提交數據量2GB;
使用ajax.setRequestHeader(‘Content-Type’, ‘application/x-www-form-urlencoded’),處理提交的字符串;
ajax.send(strings),這個strings表示form中需要提交的內容,例如a=1&b=2類似這樣的字符串。
下面是ajax中同步請求與異步請求的代碼示例,相信通過代碼的比較,大家理解起來就不難了:
對比過上面的代碼大家是不是清晰多了呢?
三、Ajax如何確定選擇同步還是異步:
相信這是部分初學者包括我在內一直困惑的問題,就是什么時候該選擇同步,什么時候該選擇異步呢?
首先要清楚Ajax中的同步選擇是為極少數既不能使用異步調用也不能重新載入整個頁面的情況而準備的。而異步處理是為避免了服務器檢索時候的延時問題,因為你的訪客可以繼續在頁面進行操作,而要求的信息也可以在更新頁面的同時得到處理。
總結
以上是生活随笔為你收集整理的ajax同步和异步的差异的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 实用VUE 开发插件!!前端必备
- 下一篇: 基于VUE只是作为模版引擎的前后端分离