ajax 同步擷取時ff與ie
1 <html>
2 <head>
3 <title>Ajax 同步測試</title>
4 <script src="Scripts/jquery-1.4.1.js" type="text/javascript"></script>
5 <script type="text/javascript">
6 $(document).ready(AjaxTest);
7 function AjaxTest() {
8 var flag = 0;
9 //顯示載入
10 $("#ajaxStatus").text("正在載入資料請等待.......");
11 //ajax提交處理(同步模式)
12 $.ajax({
13 type: "get",
14 url: "/FunctionPage.aspx",
15 async: false,
16 cache: false,
17 data: "",
18 dataType: "html",
19 success: function (ajaxData) {
20 flag = ajaxData;
21 $("#ajaxStatus").text("資料載入完成!");
22 }
23 });
24 if (flag == 1) {
25 //現實載入完成
26 $("#ajaxStatus").text("同步資料載入完成!");
27 }
28 }
29 </script>
30 </head>
31 <body>
32 <div id="ajaxStatus"></div>
33 </body>
34 </html>
35
說明:擷取FunctionPage.aspx傳回值,如果返回為1是標誌同步載入完成。
情況1:ie下會等待同步調用完成後顯示同步資料載入完成。而沒有顯示資料載入中的提示,而且ie假死。
情況2:ff下非常正常,執行順序按照預期的順序執行,顯示資料載入中->執行ajax請求->資料載入完成。
總結:ie下同步模式會導致ie假死,這點使用者體驗很不爽,不知道有好點的解決方案沒,所以暫時用非同步方式來實現邏輯。
async: true
測試代碼:/Files/skyangell/AjaxAsyncDemo.rar