日期:2014-05-16  浏览次数:20719 次

jquery的ajax全局事件详解—明河谈jquery

jquery在ajax方面是非常强大和方便的,以下是jquery进行ajax请求时方法模板:

  1. $.ajax({
  2. ? ? ? ? ?? type: "get",
  3. ? ? ? ? ?? url: "",
  4. ? ? ? ? ? ? ? ? ?? data : {},
  5. ? ? ? ? ?? beforeSend : function(){
  6. ?
  7. ? ? ? ? ?? },
  8. ? ? ? ? ?? success : function(data){
  9. ?
  10. ? ? ? ? ?? },
  11. ? ? ? ? ?? complete : function(){
  12. ?
  13. ? ? ? ? ?? }
  14. ? ? ? ? });

关于$.ajax()方法的使用,不是明河写这篇文章的目的,今天明河主要讲解当进行ajax请求时整个完整的事件流程。

jquery的ajax方法的全部全局事件:

  • ajaxStart:ajax请求开始前
  • ajaxSend:ajax请求时
  • ajaxSuccess:ajax获取数据后
  • ajaxComplete:ajax请求完成时
  • ajaxError:ajax请求发生错误后
  • ajaxStop:ajax请求停止后

当你使用jquery的ajax方法,不管是$.ajax()、$.get()、$.load()、$.getJSON()等都会默认触发全局事件,只是通常不绑定全局事件,但实际上这些全局事件非常有用处。

ajax方法的全局事件的用处

ajax全局事件,有个典型的应用场合:
你的页面存在多个甚至为数不少的ajax请求,但是这些ajax请求都有相同的消息机制。ajax请求开始前显示一个提示框,提示“正在读取数据“;ajax请求成功时提示框显示“数据获取成功”;ajax请求结束后隐藏提示框。
不使用全局事件的做法是:
给$.ajax()加上beforeSend、success、complete回调函数,在回调函数中加上处理提示框。
使用全局事件的做法是:

  1. $(document).ajaxStart(onStart)
  2. ? ? ? ? ? ? ?? .ajaxComplete(onComplete)
  3. ? ? ? ? ? ? ?? .ajaxSuccess(onSuccess);<