之前一直在寫jquery**的時候遇到ajax載入資料都需要考慮**執行順序問題。 最近的專案用了到ajax同步。這個同步的意思是當js**載入到當前ajax的時候會把頁面裡所有的**停止載入,頁面出去假死狀態,當這個ajax執 行完畢後才會繼續執行其他**頁面假死狀態解除。
而非同步則這個ajax**執行中的時候其他**一樣可以執行。
jquery的async:false,這個屬性
預設是true:非同步,false:同步。
$.ajax(
});
有了這個屬性可以相對的減少**執行書序問題,但是如果用的太多,頁面假死次數太多。這樣反而導致使用者體驗不佳~!
$.ajax()中 async 和success的官方的解釋:
async
boolean
default:true
by default, all requests are sent asynchronous (e.g. this is set to true by default). if you need synchronous requests, set this option to false. note that synchronous requests may temporarily lock the browser, disabling any actions while the request is active.
success
function
a function to be called if the request succeeds. the function gets passed two arguments: the data returned from the server, formatted according to the 'datatype' parameter, and a string describing the status. this is an ajax event.
在 這裡,async預設的設定值為true,這種情況為非同步方式,就是說當ajax傳送請求後,在等待server端返回的這個過程中,前台會繼續 執行ajax塊後面的指令碼,直到server端返回正確的結果才會去執行success,也就是說這時候執行的是兩個執行緒,ajax塊發出請求後乙個執行緒 和ajax塊後面的指令碼(另乙個執行緒)例:
$.ajax(
failure:function (result) ,
} function2();
在上例中,當ajax塊發出請求後,他將停留function1(),等待server端的返回,但同時(在這個等待過程中),前台會去執行function2(),也就是說,在這個時候出現兩個執行緒,我們這裡暫且說為function1() 和function2()。
當把asyn設為false時,這時ajax的請求時同步的,也就是說,這個時候ajax塊發出請求後,他會等待在function1()這個地方,不會去執行function2(),知道function1()部分執行完畢。
之前一直以為只要同步就好了.其實如果同步就失去了ajax的意義.
ajax 同步和非同步區別?
ajax 同步和非同步區別?我們在使用 ajax 一般都會使用非同步處理。非同步處理呢就是我們通過事件觸發到 ajax,請求伺服器,在這個期間無論伺服器有沒有響應,客戶端的其他 一樣可以執行。同步處理 我們通過實踐觸發 ajax,請求伺服器,在這個期間等待伺服器處理請求,在這個期間客戶端不能做任何處...
ajax同步和非同步區別
我們在使用 ajax 一般都會使用非同步處理。非同步處理呢就是我們通過事件觸發到 ajax,請求伺服器,在這個期間無論伺服器有沒有響應,客戶端的其他 一樣可以執行。同步處理 我們通過實踐觸發 ajax,請求伺服器,在這個期間等待伺服器處理請求,在這個期間客戶端不能做任何處理。當 ajax 執行完畢才...
ajax同步和非同步的區別
使用者填寫所有資訊後,提交給伺服器,等待伺服器的回應 檢驗資料 是一次性的。資訊錯誤又要重新填寫!非同步是指 傳送方發出資料後,不等接收方發回響應,接著傳送下個資料報的通訊方式。當使用者填寫完一條資訊後,該資訊會自動向伺服器提交,然後伺服器響應客戶端,在此過程中,使用者依然在填寫 的資訊,即向伺服器...