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