jQuery+ajax实现局部刷新的两种方法


Posted in jQuery onJune 08, 2017

在项目中,经常会用到ajax,比如实现局部刷新,比如需要前后端交互等,这里呢分享局部刷新的两种方法,主要用的是ajax里面的.load()。

第一种:

当某几个页面都有相同的头部、导航、底部的时候,点击导航链接可以在几个页面中切换,此时想要的效果是点击链接后只切换内容部分,其他不再重新加载。上代码。

jq-load.html:

<!DOCTYPE html>
<html>
 <head>
  <title>ajax局部刷新</title>
 </head>
 <body>
  <header>
   <nav>
    <a href="jq-load.html" rel="external nofollow" class="current">首页</a>
    <a href="jq-load2.html" rel="external nofollow" >新闻资讯</a>
    <a href="jq-load3.html" rel="external nofollow" >用户中心</a>
   </nav>
  </header>
  <section id="content">
   <div id="container">
     首页的内容
   </div>
  </section>
  <script src="js/jquery-1.11.0.min.js"></script>
  <script src="js/jq-load.js"></script>
 </body>
</html>

注:jq-load2.html、jq-load3.html与jq-load.html代码基本一致,只在#container的div里展示的内容不一样。

jq-load.js:

$('nav a').on('click', function(e) {         
 e.preventDefault(); // 阻止链接跳转
 var url = this.href; // 保存点击的地址

 $('nav a.current').removeClass('current');  
 $(this).addClass('current');           

 $('#container').remove();             
 $('#content').load(url + ' #container').fadeIn('slow'); // 加载新内容,url地址与该地址下的选择器之间要有空格,表示该url下的#container
});

注:此种方法用到了一些html5里面的新标记,在js中创建它们不再赘述。

第二种:

如果网页的左侧有一个列表,点击列表使右侧的内容进行切换,如果右侧的内容过多,不适合做选项卡,这时候用.load()局部刷新最好不过了。上代码。

user.html:

<!DOCTYPE html>
<html lang="en">
  <head>
    <title>个人中心</title>
    <meta charset="utf-8">
    <script src="js/jquery-1.11.0.min.js"></script>
    <script src="js/user.js"></script>
  </head>
  <body>
    <div class="userWrap">
      <ul class="userMenu">
        <li class="current" data-id="center">用户中心</li>
        <li data-id="account">账户信息</li>
        <li data-id="trade">交易记录</li>
        <li data-id="info">消息中心</li>
      </ul>
      <div id="content"></div>
    </div>
  </body>
</html>

user.js:

$(function(){
  $(".userMenu").on("click", "li", function(){
    var sId = $(this).data("id"); //获取data-id的值
    window.location.hash = sId; //设置锚点
    loadInner(sId);
  });
  function loadInner(sId){
    var sId = window.location.hash;
    var pathn, i;
    switch(sId){
      case "#center": pathn = "user_center.html"; i = 0; break;


 case "#account": pathn = "user_account.html"; i = 1; break;
      case "#trade": pathn = "user_trade.html"; i = 2; break;
      case "#info": pathn = "user_info.html"; i = 3; break;



 default: pathn = "user_center.html"; i = 0; break;
    }
    $("#content").load(pathn); //加载相对应的内容
    $(".userMenu li").eq(i).addClass("current").siblings().removeClass("current"); //当前列表高亮
  }
  var sId = window.location.hash;
  loadInner(sId);
});

user_center.html:

<div>
  用户中心
  ……
</div>

注:其他user_xxx.html的页面也是列表相对应的内容,此处不再赘述。

总结:

以上两种方法原理是一样的,通过.load()重新加载页面中的某一部分,需注意,ajax需要在服务器环境下运行。通过对比,可发现第一种比较简单,第二种稍复杂些,不过个人推荐第二种,第一种主要是举个例子,看.load()是怎么来用的,其实它在用户体验方面稍逊一筹,比如点击的时候地址栏里地址不变,使前进、后退失效,这个可以到后面再实现。而第二种的话运用比较灵活,巧妙的借助data-*的自定义属性来存储数据,点击的时候修改锚点,因为地址有变,所以刷新的时候仍然会保持当前的页面内容而不是切换到第一个。

以上所述是小编给大家介绍的jQuery+ajax实现局部刷新的两种方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

jQuery 相关文章推荐
JS/jquery实现一个网页内同时调用多个倒计时的方法
Apr 27 jQuery
使用jQuery.Pin垂直滚动时固定导航
May 24 jQuery
Vue.js 通过jQuery ajax获取数据实现更新后重新渲染页面的方法
Aug 09 jQuery
jQuery仿移动端支付宝键盘的实现代码
Aug 15 jQuery
jquery分页插件pagination使用教程
Oct 23 jQuery
jQuery实现侧边栏隐藏与显示的方法详解
Dec 22 jQuery
jQuery实现左右两个列表框的内容相互移动功能示例
Jan 27 jQuery
JS/jQuery实现简单的开关灯效果【案例】
Feb 19 jQuery
jQuery属性选择器用法实例分析
Jun 28 jQuery
Jquery高级应用Deferred对象原理及使用实例
May 28 jQuery
jQuery实现简单飞机大战
Jul 05 jQuery
jQuery中getJSON跨域原理的深入讲解
Sep 02 jQuery
jQuery 添加样式属性的优先级别方法(推荐)
Jun 08 #jQuery
jquery dataTable 后台加载数据并分页实例代码
Jun 07 #jQuery
jQuery用户头像裁剪插件cropbox.js使用详解
Jun 07 #jQuery
JQueryMiniUI按照时间进行查询的实现方法
Jun 07 #jQuery
jquery仿京东商品放大浏览页面
Jun 06 #jQuery
jquery实现图片放大点击切换
Jun 06 #jQuery
jquery请求servlet实现ajax异步请求的示例
Jun 03 #jQuery
You might like
php empty函数 使用说明
2009/08/10 PHP
PHP实现SMTP邮件的发送实例
2018/09/27 PHP
PHP5.5基于mysqli连接MySQL数据库和读取数据操作实例详解
2019/02/16 PHP
javascript常见操作汇总
2014/09/03 Javascript
运用jQuery定时器的原理实现banner图片切换
2014/10/22 Javascript
基于jquery和svg实现超炫酷的动画特效
2014/12/09 Javascript
改变checkbox默认选中状态及取值的实现代码
2016/05/26 Javascript
nodejs微信公众号支付开发
2016/09/19 NodeJs
JS对大量数据进行多重过滤的方法
2016/11/04 Javascript
nodejs的HTML分析利器node-jquery用法浅析
2016/11/08 NodeJs
jQuery使用DataTable实现删除数据后重新加载功能
2017/02/27 Javascript
基于vue.js快速搭建图书管理平台
2017/10/29 Javascript
尝试自己动手用react来写一个分页组件(小结)
2018/02/09 Javascript
JS实现倒计时图文效果
2018/11/17 Javascript
玩转Koa之koa-router原理解析
2018/12/29 Javascript
jQuery实现适用于移动端的跑马灯抽奖特效示例
2019/01/18 jQuery
巧妙运用v-model实现父子组件传值的方法示例
2019/04/07 Javascript
微信小程序顶部导航栏可滑动并选中放大
2019/12/05 Javascript
javascript用defineProperty实现简单的双向绑定方法
2020/04/03 Javascript
Vue路由的模块自动化与统一加载实现
2020/06/05 Javascript
JavaScript实现滚动加载更多
2020/12/27 Javascript
nodejs处理tcp连接的核心流程
2021/02/26 NodeJs
[37:03]完美世界DOTA2联赛PWL S3 INK ICE vs GXR 第二场 12.16
2020/12/18 DOTA
用Python制作简单的钢琴程序的教程
2015/04/01 Python
Python3如何使用range函数替代xrange函数
2020/10/05 Python
加拿大在线隐形眼镜专家:PerfectLens.ca
2016/11/19 全球购物
MVMT手表官方网站:时尚又实惠的高品质手表
2016/12/04 全球购物
美国网上花店:JustFlowers
2017/02/12 全球购物
介绍一下linux的文件系统
2015/10/06 面试题
如何进行有效的自我评价
2013/09/27 职场文书
工业自动化专业毕业生推荐信
2013/11/18 职场文书
实践单位评语
2014/04/26 职场文书
团干部培训方案
2014/06/03 职场文书
个人租房协议书样本
2014/10/01 职场文书
承诺书怎么写 ?
2019/04/16 职场文书
码云(gitee)通过git自动同步到阿里云服务器
2022/12/24 Servers