zoukankan      html  css  js  c++  java
  • Jquery ajax ajaxStart()和ajaxStop()加载前的优雅表现

    Jquery中当一个Ajax请求启动时,并且没有其他未完成的Ajax请求时,将调用ajaxStart()方法。同样,ajaxStop()方法则是在所有Ajax请求都完成时调用。这些方法的参数都是一个函数,这个函数将在事件发生时被调用。

    使用这些方法的每一步是获取一个页面元素的引用。然后就可以在这个元素上调用ajaxStart()和ajaxStop()方法。

    使用语法:

    ("#loading").ajaxStart(function(){  $(this).show(); //callback }):当一个当Ajax请求开始时将把id为"loading"的内容显示;

    ("#loading").ajaxStop(function(){  $(this).hide(); //call }):当一个当Ajax请求结束时将把id为"loading"的内容隐藏;

    在开发的过程当中,我一般会用它们来做页面等待进度图片的显示,即所有用ajax加载又不能很快加载完成的(有时页面很慢半天没显示),那么将自动调用ajaxStart显示一个等待的图片出来(我一般会用Wbox做弹出一个透明的层),等页面所有内容ajax加载完成,再关闭该层;

    为了便于大家的理解,我举个简单的例子,希望对大家有帮助:

    先把需要的说一下,jquery库,图片一张(等待进度的就可以,网上很多),OK,可以开始了:

    index.php文件内容如下:

    <script src="jquery.js"></script>
    <a href="#" id="o">o</a><br />
    <a href="#" id="p">p</a><br />
    <a href="#" id="q">q</a><br />
    <div id="loading" > <div id="content"></div>

    <script>
     $(document).ready(function(){

      $("#loading").ajaxStart(function(){
       $(this).show();
      }).ajaxStop(function(){//ajaxStop改为ajaxComplete也是一样的
       $(this).hide();
      });
      
      $("#o").click(function(){
       $.post("for.php?id=o",function(data){
        $("#content").html(data);
       });
      })

      $("#p").click(function(){
       $.post("for.php?id=p",function(data){
        $("#content").html(data);
       });
      })

      $("#q").click(function(){
       $.post("for.php?id=q",function(data){
        $("#content").html(data);
       });
      })

     })
    </script>

    for.php内容如下:

    <?php
     if($_GET['id'])
     {
      for($i=0;$i<3;$i++)
      {
       sleep(4);//为了模范我们平时打开页面很慢,使用sleep函数,让ajax加载时等待12秒;
       echo $_GET['id'];
      }
     }

    ?>

    OK,把该两个文件和jquery库,图片放于你根目录下的同一目录,访问index.php后,点o或p或q,你先会看到等待进度图片,加载完成在<a>的下面层显示ajax加载的内容ooo或ppp或qqq并关闭等待加载的图片,详细的大家可以试试,用多了自然能体会到它的好处,呵呵···

    最后要提醒的是,ajaxStart与ajaxStop都是全局方法,无论创建他们的代码放在何处,只要有ajax执行,他们都会执行。如果在此页面的其他地方也使用了ajax,该全局函数同样执行,因为他们是全局的。如果想使某个ajax不受全局方法的影响,那么可以在$.ajax(options)方法中,将参数中的global设置为false,如:

    $.ajax({
     url:"test.html",
     global:false
    });

  • 相关阅读:
    Spring(二):Spring框架&Hello Spring
    Spring(一):eclipse上安装spring开发插件&下载Spring开发包
    MyBatis(三):数据库查询结果不为空,但是使用MyBatis框架查询为空问题
    wrapper x64 版本发布到centos
    Oracle:常用的一些基本操作
    Java:import com.sun.awt.AWTUtilities;报错
    Eclipse中JavaSwing图形插件安装
    Hibernate(五):Hibernate配置文件及C3P0的用法
    Hibernate(四):Hello World
    Hibernate(三): org.hibernate.HibernateException: No CurrentSessionContext configured!
  • 原文地址:https://www.cnblogs.com/dianzan/p/7375438.html
Copyright © 2011-2022 走看看