ajax 同步请求和ajax异步请求求的差异分析

jquery同时发送两个异步ajax请求,但数据却是按同步顺序返回
[问题点数:40分,结帖人wo]
jquery同时发送两个异步ajax请求,但数据却是按同步顺序返回
[问题点数:40分,结帖人wo]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
2014年6月 .NET技术大版内专家分月排行榜第二2014年1月 .NET技术大版内专家分月排行榜第二
2014年2月 .NET技术大版内专家分月排行榜第三2013年4月 .NET技术大版内专家分月排行榜第三
2014年6月 .NET技术大版内专家分月排行榜第二2014年1月 .NET技术大版内专家分月排行榜第二
2014年2月 .NET技术大版内专家分月排行榜第三2013年4月 .NET技术大版内专家分月排行榜第三
2016年2月 总版技术专家分月排行榜第二2014年2月 总版技术专家分月排行榜第二2013年4月 总版技术专家分月排行榜第二
2016年8月优秀小版主2016年7月优秀小版主优秀小版主2015年7月优秀小版主2015年9月优秀小版主2015年5月优秀小版主2014年11月论坛优秀版主
匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。ajax同步请求
[问题点数:80分,结帖人qqZuok]
ajax同步请求
[问题点数:80分,结帖人qqZuok]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
2016年2月 总版技术专家分月排行榜第二2014年2月 总版技术专家分月排行榜第二2013年4月 总版技术专家分月排行榜第二
2016年8月优秀小版主2016年7月优秀小版主优秀小版主2015年7月优秀小版主2015年9月优秀小版主2015年5月优秀小版主2014年11月论坛优秀版主
匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。majianing 的BLOG
用户名:majianing
文章数:13
访问量:1220
注册日期:
阅读量:5863
阅读量:12276
阅读量:347600
阅读量:1047277
51CTO推荐博文
Ajax请求中的async:false/true的区别官方的解释是: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.&async.&默认是true,即为异步方式,$.Ajax执行后,会继续执行ajax后面的脚本,直到服务器端返回数据后,触发$.Ajax里的success方法,这时候执行的是两个线程。若要将其设置为false,则所有的请求均为同步请求,在没有返回值之前,同步请求将锁住浏览器,用户其它操作必须等待请求完成才可以执行。&jsp页面:function&judgeSupplierAssessment(){&&&&&&&&var&result&=&false;&&&&&&&&var&quote_list_id&=&$("input[name='quote_list_id']").val();&&&&&&&&&var&product_id=$("#product_id").val();&&&&&&&&var&url&=&"&s:url&value='/quote/quoteprice!checkSupplierAssessment.action'/&?&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&quote_list_id="+quote_list_id+"&product_id="+product_&&&&&&&&&&&&&&&&$.ajax({&&&&&&&&&&&&&&&&url:encodeURI(url),//&处理中文乱码。&&&&&&&&&&&&&&&&type:"POST",&&&&&&&//&请求的方式:"POST"&或者&"GET"&&&&&&&&&&&&&&&&dataType:"json",&&&//&数据返回的格式&&&&&&&&&&&&&&&&async:false,&&&&&&&&&&&&&&&&success&:function(obj){&&&&&&&&&&&&&&&&&&&&&&&&var&flag&=&obj['flag'];&&&&&&&&&&&&&&&&&&&&&&&&if(flag&==&'1'){&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&result&=true;&&&&&&&&&&&&&&&&&&&&&&&&}&&&&&&&&&&&&&&&&},&&&&&&&&&&&&&&&&error:errorCallBaxk//&请求失败后回调函数&&&&&&&&});&&&&&&&&return&&&&&&&&&alert(result);}这个ajax请求为同步请求,在没有返回值之前,alert(result)是不会执行的。如果async设置为:true,则不会等待ajax请求返回的结果,会直接执行ajax后面的语句。后台代码:public&String&checkSupplierAssessment()&throws&IOException{&&&&&&&&HttpServletRequest&request&=&Struts2Utils.getRequest();&&&&&&&&SystemUser&systemUser&=&getUser(request);&&&&&&&&String&pro_id&=&request.getParameter("product_id");&&&&&&&&String&quote_list_id&=&request.getParameter("quote_list_id");&&&&&&&&PrintWriter&out&=&Struts2Utils.getResponse().getWriter();&&&&&&&&HttpServletResponse&response&=&Struts2Utils.getResponse();&&&&&&&&Map&String,&String&&map&=&new&HashMap&String,&String&();&&&&&&&&String&flag&=&orderQuoteService.judgeSupplierAssessment&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&(pro_id,quote_list_id,systemUser);&&&&&&&&map.put("flag",&flag);&&&&&&&&Gson&gson&=&new&Gson();&&&&&&&&String&json&=&gson.toJson(map);&&&&&&&&response.setHeader("Cache-Control",&"no-cache");&&&&&&&&response.setContentType("text/charset=utf-8");&&&&&&&&out.print(json);&&&&&&&&out.flush();&&&&&&&&return&null;}&本文出自 “” 博客,请务必保留此出处
了这篇文章
类别:┆阅读(0)┆评论(0)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的官方的解释:
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.
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 .
在这里,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()部分执行完毕。

我要回帖

更多关于 ajax异步请求跳转页面 的文章

 

随机推荐