分享

jQuery.ajaxSetup()|web资料站

 且看且珍惜 2014-05-05
使用jQuery的$.ajaxSetup方法可以设置AJAX请求的默认参数选项,当程序中需要发起多个AJAX请求时,
则不用再为每一个请求配置请求的参数。

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

记得有次面试被问到:如果一个网站的所有ajax请求被要求追加一个指定参数,该如何解决这个需求?
网站上可能有上百个ajax请求,难道要一个个的找到去修改?这工作量就大了,而且修改过程中一不小心就要出错。
这种情况,$.ajaxSetup()方法可以帮助你。
你可以在网站的公共js文件中添加$.ajaxSetup()方法,在方法里面追加参数,如:$.ajaxSetup({addParam:'addParam'});

w3c上的demo:
设置 AJAX 请求默认地址为 "/xmlhttp/",禁止触发全局 AJAX 事件,用 POST 代替默认 GET 方法。其后的 AJAX 请求
不再设置任何选项参数:
  1. $.ajaxSetup({  
  2.   url: "/xmlhttp/",  
  3.   global: false,  
  4.   type: "POST"  
  5. });  
  6. $.ajax({ data: myData });  
我写的一个demo:
HTML:
  1. <input type="button" class="request" value="异步请求" />  
  2. <br/>  
  3. <br/>  
  4. <input type="button" class="change" value="点击该按钮改变全局ajax后再点击异步请求按钮看看" />  
JS:
  1. $(function(){  
  2.     var $request = $('.request'),  
  3.         $change = $('.change');  
  4.     $request.on('click',function(){  
  5.         $.ajax({  
  6.             type: 'post',  
  7.             url: 'test.php',  
  8.             data: {test:'test'},  
  9.             dataType: 'json',  
  10.             global: false,  
  11.             beforeSend: function(){  
  12.                 console.log('some-beforeSend');  
  13.             },  
  14.             success: function(){  
  15.                 console.log('some-success');  
  16.             }  
  17.         });  
  18.     });  
  19.     $change.on('click',function(){  
  20.         $.ajaxSetup({  
  21.             url: 'test2.php',  
  22.             data: {test2:'test2'},  
  23.             beforeSend: function(){  
  24.                 console.log('global-beforeSend');  
  25.             },  
  26.             error: function(){  
  27.                 console.log('global-ccccccccccc');  
  28.             }  
  29.         });  
  30.     });  
  31. })  
结果分两种情况:
1.没有点击第二个按钮的情况下,点击异步请求,查看控制台console,可以看到有一个输出"some-beforeSend",
查看Form Data为"test:test"。

2.点击第二个按钮的之后再点击异步请求,查看控制台,可以看到有两个输出"some-beforeSend","global-ccccccccccc",
查看Form Data为"test2:test2,test:test",说明$.ajaxSetup()里的设置起了作用。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多