jquery的ajax同步和异步的理解及示例

之前一直在写JQUERY代码的时候遇到AJAX加载数据都需要考虑代码运行顺序问题。最近的项目用了到AJAX同步。这个同步的意思是当JS代码加载到当前AJAX的时候会把页面里所有的代码停止加载,页面出去假死状态,当这个AJAX执行完毕后才会继续运行其他代码页面假死状态解除。 
而异步则这个AJAX代码运行中的时候其他代码一样可以运行。 
jquery的async:false,这个属性 
默认是true:异步,false:同步。

复制代码代码如下:

$.ajax({ 

type:
"post", 

url:
"path", 

cache:false, 

async:false, 

dataType:
($.browser.msie) ? "text" : "xml", 

success:
function(xmlobj){ 



});

有了这个属性可以相对的减少代码运行书序问题,但是如果用的太多,页面假死次数太多。这样反而导致用户体验不佳~! 

$.Ajax()中
async
和success的官方的解释: 

async 
Boolean 
Default:
true 

By default, all requests are sent asynchronous
(e.g. this is set to true by default). If you need synchronous requests, set
this option to false. Note that synchronous requests may temporarily lock the
browser, disabling any actions while the request is
active. 

success 
Function 

A
function to be called if the request succeeds. The function gets passed two
arguments: The data returned from the server, formatted according to the
‘dataType‘ parameter, and a string describing the status. This is an Ajax
Event. 

在这里,async默认的设置值为true,这种情况为异步方式,就是说当ajax发送请求后,在等待server端返回的这个过程中,前台会继续
执行ajax块后面的脚本,直到server端返回正确的结果才会去执行success,也就是说这时候执行的是两个线程,ajax块发出请求后一个线程
和ajax块后面的脚本(另一个线程)例:

复制代码代码如下:

$.ajax({ 

type:"POST", 

url:"Venue.aspx?act=init", 

dataType:"html", 

success:function(result){
//function1() 

f1(); 

f2(); 



failure:function
(result)


alert(‘Failed‘); 

}, 



function2();

在上例中,当ajax块发出请求后,他将停留function1(),等待server端的返回,但同时(在这个等待过程中),前台会去执行function2(),也就是说,在这个时候出现两个线程,我们这里暂且说为function1()
和function2()。 

当把asyn设为false时,这时ajax的请求时同步的,也就是说,这个时候ajax块发出请求后,他会等待在function1()这个地方,不会去执行function2(),知道function1()部分执行完毕。

jquery的ajax同步和异步的理解及示例,码迷,mamicode.com

时间: 2024-10-26 17:20:11

jquery的ajax同步和异步的理解及示例的相关文章

ajax同步与异步的区别

jquery中ajax方法有个属性async用于控制同步和异步,默认是true,即ajax请求默认是异步请求,有时项目中会用到AJAX同步.这个同步的意思是当JS代码加载到当前AJAX的时候会把页面里所有的代码停止加载,页面出现假死状态,当这个AJAX执行完毕后才会继续运行其他代码页面假死状态解除.而异步则这个AJAX代码运行中的时候其他代码一样可以运行. ajax中async这个属性,用于控制请求数据的方式,默认是true,即默认以异步的方式请求数据. 一.async值为true (异步) 当

ajax同步与异步的坑

之前工作中一个需求,需要动态的添加一组下拉菜单并为这个菜单绑定一个插件,很明显获取数据用Ajax,这本身是没错的,坑就坑在我用了 同步请求,当服务器端正确返回数据时再去执行下一个方法,这逻辑本身没有问题.所以当我写完之后,我发现页面加载速度及其的慢,我删除了一些多余的和http请求,仍然不能解决这个问题,然后我突然想到了Ajax同步和异步的问题,改成异步之后页面数据加载就快了很多,希望能正确的使用同步和异步. 在Jquery中ajax方法中async用于控制同步和异步,当async值为true时

JQ Ajax 同步与异步的区别

$.ajax({ url: xml_addr, type: 'get', dataType: 'xml', timeout: 1000, //设定超时 cache: false, //禁用缓存 async:false,//同步(保证配置取出再执行其他的代码) error: function(xml) { console.log("读取xml出错"); }, success:function(xml) { $(xml).find("server").each(func

C语言中同步和异步的理解

现在我在main.c这个文件中,调用360浏览器. 分析过程:在my.exe里面继续打开另外一个程序,所以就涉及到:my.exe的继续执行是否要等把另外的那个程序执行完才执行呢?如果要等,就是同步:如果不用等,就是异步.这就是同步和异步的问题. 现在是要等的情况: 结果就是要等到浏览器完全打开完才会去打印nihao . 如果这样看,就会更加的清晰: 结果是: 一个一个的打开,最后才是打印nihao 如果要异步方式: 结果是: 三个浏览器几乎同时打开,同时"nihao"还会先打印出来.

jquery的ajax同步和异步

之前一直在写JQUERY代码的时候遇到AJAX加载数据都需要考虑代码运行顺序问题.最近的项目用了到AJAX同步.这个同步的意思是当JS代码加载到当前AJAX的时候会把页面里所有的代码停止加载,页面出去假死状态,当这个AJAX执行完毕后才会继续运行其他代码页面假死状态解除. 而异步则这个AJAX代码运行中的时候其他代码一样可以运行. jquery的async:false,这个属性 默认是true:异步,false:同步. $.ajax({ type: "post", url: "

深入理解ajax同步和异步的区别

说明: 同步可以改变外部定义的变量值,异步可以提高加载效率 示例:a. 说明:b. 原代码: <script> var a = 0 function loadDoc(file,async=true){ if(window.XMLHttpRequest){ // code for IE7+, Firefox, Chrome, Opera, Safari xmlhttp=new XMLHttpRequest(); }else{ // code for IE6, IE5 xmlhttp=new Ac

ajax 同步和异步的区别

举个例子:普通B/S模式(同步)AJAX技术(异步)同步:提交请求->等待服务器处理->处理完毕返回 这个期间客户端浏览器不能干任何事异步: 请求通过事件触发->服务器处理(这是浏览器仍然可以作其他事情)->处理完毕--------------------------------------------------------------------------------------------------------------------同步就是你叫我去吃饭,我听到了就和你去

AJAX同步和异步的区别

function paginationGo(page){ sendata = {"page":page}; $.ajax({ type:"POST", url:"newqc1.asp", async:true, timeout:10000, data:sendata, success:function(data){ //alert(data+"aa"); $("#qc01").html(data); },

ajax同步与异步的实践

写在前面:本文中所有测试实例皆基于mac版chrome, firefox及safari. 同步请求 同步请求,其实也就是告诉js引擎:你先把我这个处理了再做别的事情!所以同步无需等,在send()之后直接往responseText中拿数据就好. function req() { var xhr = new XMLHttpRequest(); xhr.open('get', './data.json',false); xhr.send(); console.log(xhr.responseText