ajax同步導致ajax上面的代碼不執行?


js代碼:
環境:IE11
要求:點擊一個按鈕后,頁面xxx的地方立即顯示"開始處理...",直到ajax處理結束后,xxx內容才更新為新的處理結果;
點擊事件執行代碼如下:
xxx.innerHTML="開始處理...";
$.ajax(...async:false,...);//ajax同步
問題:
點擊按鈕后,頁面上並沒有顯示"開始處理...";而是在ajax執行完后,頁面xxx位置直接顯示處理后的結果;
個人解析:
js執行innerHTML到頁面顯示"開始處理..."是2個動作,一個是js執行,一個是瀏覽器渲染,中間有個時間差,
js執行完innerHTML后,頁面上還沒來得及顯示"開始處理..."時,js就執行到了ajax部分,而ajax同步會導致鎖定瀏覽器,表現為頁面內容不會更改;
當ajax執行回調函數時,對xxx內容進行二次賦新值,所以在"開始處理..."還未顯示時,由於此時xxx已經更新為新值,頁面之后直接顯示為新值;
如何讓頁面在執行ajax期間顯示innerHTML中的內容"開始處理..."?
設置1個定時器,在innerHTML后延遲100ms再執行ajax;即:
xxx.innerHTML="開始處理...";
setTimeout(function(){
 $.ajax(...async:false,...);//ajax同步
},100);


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM