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
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
用心对待身边的一切,一切皆有可能!