例1。jquery+ajax/" target="_blank">jquery ajax同步方式
代碼如下 |
複製代碼 |
$.ajax({ url : 'test.php', type : 'post', async: false,//使用同步的方式,true為非同步方式 data : {'act':'addvideo', 'videoname':videoname},//這裡使用json對象 success : function(data){ //code here... }, fail:function(){ //code here... } }); |
例2
代碼如下 |
複製代碼 |
//javascript function test() { var a= 1; $.ajax({ type : 'GET', url : 'test.php', data : 'page=112', success:function(msg) { alert(msg); a= msg; } }) alert(a); } //test.php sleef('5'); //休息五分鐘 echo 'in'; /* 這個程式運行情況是 先列印1(a=1) 然後五秒過後 列印 in 根據這個情況就可以知道 jquery 的ajax的執行流程 因為是非同步呼叫 以前就是這樣給一個變數賦值 不管怎麼弄都是不對的。最後就發現這個問題 參數async改為false就為同步調用 當ajax返回結果後程式才繼續執行 */ |
例3
在這裡,async預設的設定值為true,這種情況為非同步方式,就是說當ajax發送請求後,在等待server端返回的這個過程中,前台會繼續 執行ajax塊後面的指令碼,直到server端返回正確的結果才會去執行success,也就是說這時候執行的是兩個線程,ajax塊發出請求後一個線程 和ajax塊後面的指令碼(另一個線程)例:
代碼如下 |
複製代碼 |
$.ajax({ type:"POST", url:"Venue.aspx?act=init", dataType:"html", success:function(result){ //function1() f1(); f2(); } failure:function (result) { alert('Failed'); }, } function2(); |
在上例中,當ajax塊發出請求後,他將停留function1(),等待server端的返回,但同時(在這個等待過程中),前台會去執行function2(),也就是說,在這個時候出現兩個線程,我們這裡暫且說為function1() 和function2()。
當把asyn設為false時,這時ajax的請求時同步的,也就是說,這個時候ajax塊發出請求後,他會等待在function1()這個地方,不會去執行function2(),知道function1()部分執行完畢。
注意
同步的意思是當JS代碼載入到當前AJAX的時候會把頁面裡所有的代碼停止載入,頁面出去假死狀態,當這個AJAX執行完畢後才會繼續運行其他字碼頁面假死狀態解除。
而非同步則這個AJAX代碼運行中的時候其他代碼一樣可以運行。
jquery的async:false,這個屬性