PHP群:95885625 Hbuilder+MUI群:81989597 站长QQ:634381967
    您现在的位置: 首页 > 开发编程 > Jquery教程 > 正文

    ajax页面局部刷新

    作者:admin来源:B5教程网浏览:时间:2020-09-30 00:07:50我要评论
    导读:使用Ajax 实现页面局部刷新 支持H5的浏览器会保留访问痕迹 链接跟随变化 可后退前进插件 Jquery ajaxload js复制代码代码如下: **---
    使用Ajax 实现页面局部刷新  支持H5的浏览器会保留访问痕迹 链接跟随变化 可后退前进
     
    插件 Jquery.ajaxload.js
     
     
    复制代码代码如下:
    1. /**
    2.  -------------------------------------------
    3.  *  Version    1.0                         |
    4.  *  Autor      v-yao                       |
    5.  *  QQ         281310716@qq.com            | 
    6.  *  Date       2014-01-10                  |
    7.  *  web        http://www.chinacoder.cn    | 
    8.  -------------------------------------------
    9.  *  {OPTIONS} |  [type]  |(default And Example)  | Explanation  
    10.  *  --------- | -------- |---------------------|-----------------------------------------
    11.  *  @doArea   | [string] | 必选   , '#ajaxbox' | Ajax操作区域 ID选择器 #ajaxbox 必须唯一 
    12.  *  @getArea  | [string] | 不必须 , '#content' | 默认为''              见下说明
    13.  *  @type     | [string] | 不必须 , 'click'    | 默认为'click'         见下说明
    14.  *  @url      | [string] | 不必须 , 'href'     | 默认为a标签'href'      见下说明
    15.  *  @className| [string] | 不必须 ,            | 默认为'yao-ajax-yes'  见下说明
    16.  *  @imgPath  | [string] | 不必须 ,            | 默认为''              见下说明
    17.  *  notice: 浏览器url变化和后退前进的history部分需要h5支持  不支持 此方面功能无效
    18. */
    19. (function($){
    20.     //默认参数对象值
    21.     var defaults = {
    22.         doArea:'',   //必须参数 Ajax所要操作的容器
    23.         getArea:'',  //可选参数 请求的地址输出的有效区域的内容 若不填则 输出urlPath的整个页面 一般情况下 若后端输出的是页面 则需填写去掉公共html部分
    24.         type:'click',//可选参数 默认为click 绑定的事件
    25.         url:'href',  //可选参数 当前元素下 存放请求地址的标签 默认为href 若为其他 请设置其他标签 存放请求url
    26.         className:'yao-ajax-yes',//可选参数 用于标记class 也可用其标记 当前选中
    27.         imgPath:''   //可选参数 用于等待提示图片链接 一般为gjf 默认为空 仅文字提示
    28.     };
    29.  
    30.     //初始化对象
    31.     var settings = {},
    32.         History = window.history;
    33.  
    34.     $.fn.ajaxLoad = function(options){
    35.         var self = this;//记录当前
    36.         //对象合并 并加入settings中
    37.         $.extend(settings, defaults, options );
    38.         var Y = {
    39.             ready:function(){
    40.                 $(self).live(settings.type, Y.ajaxLoad);//绑定事件
    41.                 Y.windowLoad();
    42.             },
    43.             doLoad:function(url){
    44.                 $(settings.doArea).fadeOut("fast");
    45.                 Y.waitStart();//提示开始
    46.                 var willUrl = url;
    47.                 if(settings.getArea != ''){
    48.                     willUrl = willUrl + " " + settings.getArea;
    49.                 }
    50.                 setTimeout(function(){//等待 fadeOut 完成执行
    51.                     $(settings.doArea).load(
    52.                         willUrl,
    53.                         Y.success
    54.                     );
    55.                 },200);
    56.             },
    57.             ajaxLoad:function(e){
    58.                 e.preventDefault();
    59.                 var thisSelf = this;//记录当前
    60.                 //防止同意连接重复点击 并且加入class后 前端易于区分当前链接
    61.                 if($(thisSelf).hasClass(settings.className) === true){
    62.                     return;
    63.                 }
    64.                 var url = $(thisSelf).attr(settings.url);
    65.                 Y.doLoad(url);
    66.                 //成功后处理
    67.                 $(self).removeClass(settings.className);
    68.                 $(thisSelf).addClass(settings.className);
    69.  
    70.                 if(!$.browser.msie){//如果是ie浏览器 不支持h5 则弃用此功能
    71.                     //将连接地址 加入浏览器history中 notice: 浏览器支持h5 才可实现
    72.                     var state = {title: document.title, url: url};
    73.                     History.pushState(state, null, url);
    74.                 }
    75.             },
    76.             windowLoad:function(){
    77.                 //绑定浏览器前进后退 实现ajax无刷新页面 链接变化且可以后退前进 notice: 浏览器支持html5 才可实现
    78.                 if(!$.browser.msie){//如果是ie浏览器 不支持h5 弃用此功能
    79.                     window.addEventListener('popstate', function(e){
    80.                         if(e.state){
    81.                             var backUrl = e.state.url;//获取已存入的url
    82.                             Y.doLoad(backUrl);//做载入动作
    83.                         }
    84.                     }, false);
    85.                 }
    86.             },
    87.             waitStart:function(){
    88.                 Y.waitEnd();
    89.                 var left = $(settings.doArea).offset().left + $(settings.doArea).width() / 2 - 64;//提示框left值
    90.                 var top = $(settings.doArea).offset().top + $(settings.doArea).height() / 2 - 100;//提示框top值
    91.                 var isImg = settings.imgPath==''?'':'
       
      ';  
    92.                 $('body').append('
      加载中...'+isImg+'
      ');
    93.             },
    94.             waitEnd:function(){
    95.                 $("#yao-loading").remove();
    96.             },
    97.             success:function(){
    98.                 Y.waitEnd();//提示结束
    99.                 $(settings.doArea).fadeIn();//淡入
    100.             }
    101.         };  
    102.         Y.ready();
    103.     }
    104. })(jQuery);
    应用
     
    复制代码代码如下:
    1. $(function($){
    2.     var options = {
    3.         "doArea":"#ajaxbox", //必须参数 Ajax所要操作的容器
    4.         "getArea":"#content",//可选参数 请求的地址输出的有效区域的内容 若不填则 输出urlPath的整个页面
    5.         "imgPath":"http://s.tuanweihui.com/static/img/ajax-loaders/ajax-loader-6.gif?v=1"
    6.     };
    7.     $("a").ajaxLoad(options);
    8. });

    转载请注明(B5教程网)原文链接:https://b5.mxunkeji.com/content-47-212-1.html
    相关热词搜索: 局部刷新 ajax