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 相关文章推荐
jQuery Validate 校验多个相同name的方法
May 18 jQuery
jquery DataTable实现前后台动态分页
Jun 17 jQuery
JavaScript之事件委托实例(附原生js和jQuery代码)
Jul 22 jQuery
jQuery EasyUI结合zTree树形结构制作web页面
Sep 01 jQuery
React中jquery引用的实现方法
Sep 12 jQuery
jQuery实现html双向绑定功能示例
Oct 09 jQuery
jQuery EasyUI window窗口使用实例代码
Dec 25 jQuery
jQuery实现的自定义轮播图功能详解
Dec 28 jQuery
jQuery使用$.extend(true,object1, object2);实现深拷贝对象的方法分析
Mar 06 jQuery
jQuery 查找元素操作实例小结
Oct 02 jQuery
基于JQuery和DWR实现异步数据传递
Oct 16 jQuery
jQuery实现鼠标拖动图片功能
Mar 04 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
在线短消息收发的程序,不用数据库
2006/10/09 PHP
谈谈PHP的输入输出流
2007/02/14 PHP
php cli 方式 在crotab中运行解决
2010/02/08 PHP
php中in_array函数用法探究
2014/11/25 PHP
php结合正则批量抓取网页中邮箱地址
2015/05/19 PHP
php面向对象值单例模式
2016/05/03 PHP
JS解密入门之凭直觉解
2008/06/25 Javascript
JS window对象的top、parent、opener含义介绍
2013/12/03 Javascript
js解析json读取List中的实体对象示例
2014/03/11 Javascript
js根据鼠标移动速度背景图片自动旋转的方法
2015/02/28 Javascript
input输入框鼠标焦点提示信息
2015/03/17 Javascript
Vue.js每天必学之内部响应式原理探究
2016/09/07 Javascript
分享一个原生的JavaScript拖动方法
2016/09/25 Javascript
js操作浏览器的参数方法
2017/01/21 Javascript
webpack3+React 的配置全解
2017/08/21 Javascript
动态内存分配导致影响Javascript性能的问题
2018/12/18 Javascript
vue组件系列之TagsInput详解
2020/05/14 Javascript
vant-ui AddressEdit地址编辑和van-area的用法说明
2020/11/03 Javascript
一行JavaScript代码如何实现瀑布流布局
2020/12/11 Javascript
[52:37]完美世界DOTA2联赛循环赛 Forest vs DM BO2第一场 10.29
2020/10/29 DOTA
Python函数式编程指南(三):迭代器详解
2015/06/24 Python
Python内置函数OCT详解
2016/11/09 Python
Python函数参数操作详解
2018/08/03 Python
Python callable内置函数原理解析
2020/03/05 Python
使用IPython或Spyder将省略号表示的内容完整输出
2020/04/20 Python
Python爬虫简单运用爬取代理IP的实现
2020/12/01 Python
香港网上花店:FlowerAdvisor香港
2019/05/30 全球购物
大三学生入党思想汇报
2014/01/02 职场文书
新品发布会策划方案
2014/06/08 职场文书
幼师自荐信范文
2015/03/06 职场文书
幼儿园六一儿童节演讲稿
2015/03/19 职场文书
工作失职自我检讨书
2015/05/05 职场文书
国际贸易实训总结
2015/08/03 职场文书
使用Vue3+Vant组件实现App搜索历史记录功能(示例代码)
2021/06/09 Vue.js
SSM VUE Axios详解
2021/10/05 Vue.js
基于Python实现将列表数据生成折线图
2022/03/23 Python