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

发布于,归属于jquery教程6个座位已被强势霸占! 共有1,221人围观    

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);
  4.    
  5.     function onStart(event) {
  6.         //.....
  7.     }
  8.     function onComplete(event, xhr, settings) {
  9.         //.....
  10.     }
  11.     function onSuccess(event, xhr, settings) {
  12.         //.....
  13.     }

ajax方法完整事件流

为了更直观的说明,明河使用Axure画了二个流程图,画的不好还请见谅,O(∩_∩)O

ajax方法完整事件流演示

为了让朋友更容易理解整个事件流,明河做了以下demo。

(如果您喜欢这篇教程,可以通过支付宝打赏我们1元哦,拜谢!)

跟作者说两句

:wink: :twisted: :roll: :oops: :mrgreen: :lol: :idea: :evil: :cry: :arrow: :?: :-| :-x :-o :-P :-? :) :( :!: 8-O 8)

6个座位已被强势霸占!

  1. mice

    看完文章要留言=.=

    明河共影回复于 2010年08月11日 2:17

    哈哈,感谢mice支持。

    MOPVHS回复于 2010年09月04日 1:42

    @mice, 看到麦斯了~~~

  2. 落幕

    郁闷,竟然出现:RIA之家不再支持IE6!给你造成的不便,明河深表抱歉,同时强烈建议升级IE6,或者换用firefox或谷歌浏览器!
    。。。。

    明河共影回复于 2010年08月11日 2:17

    你的浏览器是IE6吗?我写的这个主题不支持IE6,也就是没在IE6下调试过。

  3. island

    无意间发现这个博客,发现很不错,不愧是淘宝的前端人员,,以后会继续关注。。