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的回调函数中给全局变量赋值无效。

浙公网安备 33010602011771号