Ajax同步異步的區別:
xmlHttp.open(method,url,async);
async:布爾值,用來說明請求是否為異步模式。是來控制JavaScript如何執行該請求。
異步請求:當async設置為true時,將以異步模式發送請求,JavaScript代碼將繼續執行而不再等待響應,且必須使用一個事件處理函數來監控請求的響應。
同步請求:當async設置為false時,將以異步模式發送請求,JavaScript將等接收到響應后再繼續執行剩余代碼。這意味着如果響應時間長,用戶在瀏覽器收到響應前是無法與其交互的。
因此,Ajax開發建議是:使用異步請求來實現數據獲取,使用同步請求來實現與服務器之間發送和接收簡單的消息。
用同步模式來發送請求(將open()方法的第三個參數設置為false),可以使你在調用send()方法之后馬上對其響應進行處理。
這對於想讓用戶交互等待響應,或希望只接受很少的數據(例如,小於1kb)的應用場景是很有用的。
而對於通常數據量或者較大的數據量而言,最好是使用異步調用
Ajax例子:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Ajax同步異步轉換</title> <script type="text/javascript" src="js/jquery.min.js"></script> </head> <body> <script> //在post/get提交方式的簡寫: $.post/get("url",{data},function(response){}); //默認是異步的! $.ajax( type: "POST/GET", url: "", data: {}, dataType: "json", async: true / false, success: function(date) { } ); //success是之前的寫法,現在推薦用.dane() //這是最常見的使用ajax方法了。下面實現ajax的同步請求: $.ajax( type: "POST/GET", data: {}, async: false, ).done(function(date) { }); //ajax同步請求最常見的就實現ajax請求的結果數據返回。 //比如在用ajax方法成功得到相應后,我們需要把ajax的返回結果return出去給外部的函數使用這時需要同步。 function ajax() { var backData; $.ajax( type: ”post”, data: {}, async: false, //更改為同步 ).done( function(response) { backData = response; }); return backData; } var newData = ajax(); //此時newData = response; //在此過程中注意修改async, 它如果是true( 默認), //那么就是在異步的情況下, 這種情況下實現return是不能實現的, 因為異步就說明了程序的執行順序和效果發生了改變。 修改為同步, 實現返回值。 //舉例ajax異步轉同步 //添加新用戶 function ajaxNew(username){ var username; var newVal;//添加以后新用戶的信息 $.ajaxSetup({ //ajax異步轉同步 async : false }); $.get("./ajaxAdmin.php?use="+username+"&new=1", function(data,status){ // alert("內容:"+data+"\n狀態: "+status); //存儲信息 newVal=data; }); return newVal; alert(newVal); } </script> </body> </html>