ajax关于同步于异步 跨域问题

请先看一下代码01 <script type="text/javascript">

 $.ajax({
 type:"get",
 url:'http://localhost:8080/mmxh-mgt-console/demandList.action?callback=?',//callback=? 实现跨域功能
 dataType:"json",
 async:false,
 success:function(msg){
 alert("1");  
 }
 });
 alert("2"); 
 </script>

 
此ajax函数用的是同步发送请求,按照正常的应该是打印"1",然而确是先打印了“2”。
最后发现问题:由于跨域的原因引起的,如果是非跨越的那么就是正常的先打印“1”,后打印“2”.

因为有跨域所以不管是否有设置同步,都不会先弹出1,而是先弹出2 ,都会以异步凡是访问。

设置同步方式:

$.ajaxSettings.async = false;


$.ajaxSetup({
async: true // 使用同步方式执行AJAX
});

总结:使用ajax时,如果不考虑跨网域,可是设置同步或异步,如果是跨网域,不管是否设置同步或异步都会以异步方式访问,异步访问时:代码执行不会等待,所以会导致全局变量在ajax的回调函数中给全局变量赋值无效。

posted @ 2013-05-06 17:26  丿暖。风?  阅读(300)  评论(0)    收藏  举报