论:ajax 同步请求与异步请求

一段代码引发的蝴蝶效应:

$.ajaxSetup({
    async : false       // 同步请求
});

async值为true (异步)

当ajax发送请求后,在等待server端返回的这个过程中,前台会继续 执行ajax块后面的脚本,直到server端返回正确的结果才会去执行success,也就是说这时候执行的是两个线程,ajax块发出请求后一个线程 和ajax块后面的脚本(另一个线程)

async值为false (同步)

当执行当前AJAX的时候会停止执行后面的JS代码,直到AJAX执行完毕后时,才能继续执行后面的JS代码。

总结:异步传输方式是用的最多的也是默认的方式,他避免了服务器检索给用户带来的时间延迟。在异步传输时候,它只是在后面悄悄进行着,用户仍旧可以做他做的事情,不会给用户任何的等待的感觉。在传输的数据量较大的时候,服务器检索的时间就更长了,但是用户却不知道,用户仍旧专注于页面上面的操作,就给用户良好的体验。但是当你的请求结果是下一步的必要条件时,建议还是使用同步请求。

$.ajaxSetup() 该函数用于更改jQuery中AJAX请求的默认设置选项。之后执行的所有AJAX请求,如果对应的选项参数没有设置,将使用该函数中更改后的默认设置。

设置全局 AJAX 默认options选项。既然是全局默认选项,所以,该项中设置的参数会影响所有的$.ajax请求如$.get(),$.post(),$.ajax等。需要注意的是,如果在请求时重新设置了已参数值,这时请求会用新设置的值,而不是用$.ajaxSetup中默认设置的值(用$.ajaxSetup函数所设置的默认值不会应用到load()命令上);对于实用工具函数,如$.get()和$.post(),其HTTP方法不会因为使用这些默认值而被覆盖。如设置GET的默认类型不会导致$.post()使用HTTP的GET方法。

举个栗子:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
    <html xmlns="http://www.w3.org/1999/xhtml">  
    <head>  
      <title>jQuery Ajax - Load</title>  
      
      <script type="text/javascript" src="../scripts/jquery-1.3.2-vsdoc2.js"></script>  
      
      <script type="text/javascript">  
      
            $(document).ready(function()  
            {  
                $.ajaxSetup({  
                    url: "/develop/index/index",  
                    data: { "param": "name_wang" }, 
                    type: "POST",  
                    success: function(data, textStatus) { $("#divResult").html(data); }  
                });  
      
                $("#btnAjax").click(function(event) { $.ajax(); });  
                $("#btnGet").click(function(event) { $.get(); });  
                $("#btnPost").click(function(event) { $.post(); });  
                $("#btnGet2").click(function(event) { $.get("/develop/index/index2",{ "param": "sadfdsfdas" }); });  
      
            });  
      
      </script>  
      
    </head>  
    <body>    
          <button id="btnAjax">不传递参数调用ajax()方法</button><br />  
         <button id="btnGet">不传递参数调用get()方法</button><br />  
         <button id="btnPost">不传递参数调用post()方法</button><br />  
         <button id="btnGet2">传递参数调用get()方法, 使用全局的默认回调函数</button><br />  
         <br />  
         <div id="divResult"></div>  
    </body>  
    </html>


注意:jQuery文档中说ajaxSetup()不建议使用,这是为什么?

            答:原因可能是会和一些插件什么的冲突,如果插件内用到ajax的,会被你的ajaxSetup影响到。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值