Ajax同步异步的区别:
xmlHttp.open(method,url,async);
async:布尔值,用来说明请求是否为异步模式。是来控制JavaScript如何执行该请求。
异步请求:当async设置为true时,将以异步模式发送请求,JavaScript代码将继续执行而不再等待响应,且必须使用一个事件处理函数来监控请求的响应。
同步请求:当async设置为false时,将以异步模式发送请求,JavaScript将等接收到响应后再继续执行剩余代码。这意味着如果响应时间长,用户在浏览器收到响应前是无法与其交互的。
因此,Ajax开发建议是:使用异步请求来实现数据获取,使用同步请求来实现与服务器之间发送和接收简单的消息。
用同步模式来发送请求(将open()方法的第三个参数设置为false),可以使你在调用send()方法之后马上对其响应进行处理。
这对于想让用户交互等待响应,或希望只接受很少的数据(例如,小于1kb)的应用场景是很有用的。
而对于通常数据量或者较大的数据量而言,最好是使用异步调用
Ajax例子:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Ajax同步异步转换</title> <script type="text/javascript" src="js/jquery.min.js"></script> </head> <body> <script> //在post/get提交方式的简写: $.post/get("url",{data},function(response){}); //默认是异步的! $.ajax( type: "POST/GET", url: "", data: {}, dataType: "json", async: true / false, success: function(date) { } ); //success是之前的写法,现在推荐用.dane() //这是最常见的使用ajax方法了。下面实现ajax的同步请求: $.ajax( type: "POST/GET", data: {}, async: false, ).done(function(date) { }); //ajax同步请求最常见的就实现ajax请求的结果数据返回。 //比如在用ajax方法成功得到相应后,我们需要把ajax的返回结果return出去给外部的函数使用这时需要同步。 function ajax() { var backData; $.ajax( type: ”post”, data: {}, async: false, //更改为同步 ).done( function(response) { backData = response; }); return backData; } var newData = ajax(); //此时newData = response; //在此过程中注意修改async, 它如果是true( 默认), //那么就是在异步的情况下, 这种情况下实现return是不能实现的, 因为异步就说明了程序的执行顺序和效果发生了改变。 修改为同步, 实现返回值。 //举例ajax异步转同步 //添加新用户 function ajaxNew(username){ var username; var newVal;//添加以后新用户的信息 $.ajaxSetup({ //ajax异步转同步 async : false }); $.get("./ajaxAdmin.php?use="+username+"&new=1", function(data,status){ // alert("内容:"+data+"\n状态: "+status); //存储信息 newVal=data; }); return newVal; alert(newVal); } </script> </body> </html>