2012年7月31日 星期二

[Ajax] 同步的方法 async:false

表格輸入時, 想即時檢查資料庫有没有相同記錄時,不用多問大家都會選用 Ajax 。
佢可以令你行 JavaScript 時不會因 loading 停頓,又不用重新整理頁面 , 迅捷回應 , 對用家影響不大,用家可以繼續自己的工作

但今日我先發現自己一點也不明白他…… 
之前我一直覺得 Ajax 懂得從資料庫取得答案再回覆已經達到同步,原來是錯得非常離譜其實由Ajax全名 (Asynchronous JavaScript and XML) 已經清楚說明了他是非同步的技術

就因為這個誤解 , 浪費了大部分時間在同一段 code 轉圈圈
只想替幫表格加句 Ajax 做 checking 時,邏輯上我没有問題 , 檢查 Ajax , output都没有發現出錯, 為什麼我想要的答案總是錯 ?  最後要麻煩到師父幫忙
一步步翻查 , 才發現原來我那段 Ajax 還未行完 , result 還未出 , 我最尾的 Jquery 已經行完顯示結果 , 令我 Ajax 結果無論如何 , 佢都永遠都正確  那我段 code 不就是廢了嗎?


由於AJAX 預設都是 非同步模式 (Asynchronous) 所以必須把 Asynchronous 設為 false (就是同步 Synchronous) 

$().ready( function(){
 $.ajaxSetup({ cache:false,
               async:false });
 });


這句解釋就是等AJAX 有了返回值才會執行下面的 JS (((我的問題就解決了!!!