WordPress全站PJAX代码例子

var ajx<em>main = '#main' , // 要替换的主体id,改为你文章部分的容器
ajx</em>a = 'a' , // a标签,自己添加排除规则
ajx<em>comt = 'comments' , // 整个评论区的id ,不加#
ajx</em>submit<em>form = '#comment</em>form' , // 提交按钮所在的表单
ajx<em>comtlist = '.comment-list' , // 评论列表id或class
ajx</em>comtpagenav = '.pagenav' , // 评论分页导航的id或class
ajx<em>comtpagenav</em>a = '.pagenav a' , // 评论分页导航的a标签
ajx<em>sform = '.inlo-search form' , // 搜索表单form标签
ajx</em>skey = '.s-key' ; // 搜索表单input标签内的id或class
function reload_func(){
    // 这里放置需要重载的JS或函数
}<p></p>

<p>$(function() {<br>
    a(); //pushState初始化执行一次
});
// 建立锚点函数,用于跳转后的滚动定位,使用这个主要是有侧栏评论带#号时能在请求后定位到该条评论的位置
function body<em>am(id) {
    id = isNaN(id) ? $('#' + id).offset().top : id;
    $("body,html").animate({
        scrollTop: id
    }, 0);
    return false;
}
function to</em>am(url) {
    var anchor = location.hash.indexOf('#'); // 用indexOf检查location.href中是否含有'#'号,如果没有则返回值为-1
    anchor = window.location.hash.substring(anchor + 1);
    body<em>am(anchor);
}
// 主页地址,用于下面的提交函数
var home</em>url = document.location.href.match(/http://([^/]+)//i)[0];
// 函数: 替换url,用于评论ajax提交
function replaceUrl(url, domain) {
    return url.replace(/http://([^/]+)//i, domain);
}
// 函数:从封装的Json获取
function getFormJson(frm) {
    var o = {};
    var a = $(frm).serializeArray();
    $.each(a,
        function() {
        if (o[this.name] !== undefined) {
            if (!o[this.name].push) {
                o[this.name] = [o[this.name]];
            }
            o[this.name].push(this.value || '');
        } else {
            o[this.name] = this.value || '';
        }
        });
    return o;
}
// 函数:更新浏览器历史缓存(用于浏览器后退)
function l(){
    history.replaceState( // 刷新历史点保存的数据,给state填入正确的内容
    {    url: window.document.location.href,
        title: window.document.title,
        html: $(document).find(ajx<em>main).html(), // 抓取主体部分outerHTML用于呈现新的主体。也可以用这句 html: $(ajx</em>main).prop('outerHTML'),
    }, window.document.title, document.location.href);
}
// 函数:页面载入初始一次,解决Chrome浏览器初始载入时产生ajax效果的问题,并且监听前进后退事件
function a(){
    window.addEventListener( 'popstate', function( e ){  //监听浏览器后退事件
        if( e.state ){
            document.title = e.state.title;
            $(ajx<em>main).html( e.state.html ); //也可以用replaceWith ,最后这个html就是上面替换State后里面的html值<br>
            // 重载js
            window.load =  reload</em>func(); // 重载函数
        }
    });<br>
}
//函数:AJAX核心
function ajax(reqUrl, msg, method, data) {
    if (msg == 'pagelink' || msg == 'search') { // 页面、搜索
        $(ajx<em>main).fadeTo('slow',0.6);
    } else if ( msg == 'comment' ){ // 评论提交<br>
        $('#' + ajx</em>comt).fadeTo('slow',0.5);
    } else if ( msg == 'comtpagenav' ){ //  评论分页时
        $(ajx<em>comtlist).fadeTo('slow',0.5);
        $(ajx</em>comtpagenav).fadeTo('slow',0.8);
    }
    $.ajax({
        url: reqUrl,
        type: method,
        data: data,
        beforeSend : function () { //加载前操作 这个必须放在window.history.pushState()之前,否则会出现逻辑错误。<br>
            l(); //刷新历史点内容,这个必须放在window.history.pushState()之前,否则会出现逻辑错误。
        },
        success: function(data) {
            if (msg == 'pagelink' || msg == 'search') { // 又如果msg为 页面 或 搜索—— 【1】
                $(ajx<em>main).html($(data).find(ajx</em>main).html()) ; // 替换原#main的内容
                $(ajx<em>main).fadeTo('normal',1);
            } else if (msg == 'comment') { // 又如果msg为 评论回复——————————【2】
                $('#' + ajx</em>comt).html($(data).find('#' + ajx<em>comt).html());//  评论列表滑出
                $('#' + ajx</em>comt).fadeTo('normal',1);
                $("body,html").animate({scrollTop:$('#'+ajx<em>comt).offset().top}, 900); // 定位返回评论ID顶部
            } else if (msg == 'comtpagenav') { // 又如果msg为 评论分页——【3】
                var content = $(data).find(ajx</em>main).html();
                var pagedstring = $(data).find(ajx<em>comtpagenav).html();
                $(ajx</em>main).html(content);
                $(ajx<em>comtpagenav).html(pagedstring);
                $(ajx</em>comtlist).fadeTo('normal',1); // 评论列表显示
                $(ajx<em>comtpagenav).fadeTo('normal',1); // 评论分页显示
                $("body,html").animate({scrollTop:$(ajx</em>comtlist).offset().top}, 600);
            }
            document.title = $(data).filter("title").text(); // 浏览器标题变更
            if (msg != 'comment') { // —— 不为后退 也 不为评论回复时
                var state = { // 设置state参数
                    url: reqUrl,
                    title: $(data).filter("title").text(),
                    html: $(data).find(ajx<em>main).html(),
                };
                // 将当前url和历史url添加到浏览器当中,用于后退。里面三个值分别是: state, title, url
                window.history.pushState(state, $(data).filter("title").text(), reqUrl);
            }
        },
        complete: function() { // ajax完成后加载
            // 代码重载区
            if (msg == 'pagelink') { // 若msg为 页面链接
                to</em>am(reqUrl) ;// 定位到相应链接位置,这个必须放在window.history...之后执行,否则遇到带#号的链接,再点击其他链接地址栏就无法改变
            }
            window.load =  reload<em>func(); // 重载函数
        },
        timeout: 5000, // 超时长度<br>
        error: function(request) { // 错误时的处理
            if (msg == msg == 'pagelink' || msg == 'search'){
                location.href = reqUrl;    //直接刷新跳转到请求的页面链接
            } else if (msg == 'comment') { // 若msg为评论回复
                alert($(request.responseText).filter("p").text()); // 弹出警告,这个是必需的,如果删除那么提交错误时就会打开空白页面
                $('#' + ajx</em>comt).fadeTo('normal',1);
            } else if ( msg == 'comtpagenav' ) {
                $(ajx<em>comtlist).fadeTo('normal',1); // 警告后评论区显示
                $(ajx</em>comtpagenav).fadeTo('normal',1); // 警告后评论区显示
            } else {
                location.href = reqUrl; //页面错误时跳转到请求的页面
            }
        },
    });
}
//页面ajax
$('body').on("click",ajx<em>a,
function() {
    ajax($(this).attr("href"), 'pagelink');
    return false;
});
//评论ajax
$('body').on('submit',ajx</em>submit<em>form,
function() {
    ajax(replaceUrl(this.action, home</em>url), 'comment', 'POST', getFormJson(this));
    return false;
});
//搜索ajax
$('body').on('submit',ajx<em>sform,
function() {
    ajax(this.action + '?s=' + $(this).find(ajx</em>skey).val(), 'search');
    return false;
});
//评论分页ajax
$('body').on("click",ajx<em>comtpagenav</em>a,
function() {
    ajax($(this).attr("href"), 'comtpagenav');
    return false;
});</p>

时间: 2024-08-07 12:52:54

WordPress全站PJAX代码例子的相关文章

PHP父类调用子类方法的代码例子

 这篇文章主要介绍了PHP父类调用子类方法的代码例子,需要的朋友可以参考下 今天突然发现需要在父类中调用子类的方法,之前一直都没这么用过,通过实践发现也可以.例子如:  代码如下: <?php /**  * 父类调用子类方法 基类  * @author LNMP100  *  */ class BaseApp {     /**      * 调用子类方法      * @version  创建时间:2013-07-10      */     function _run_action()  

asp又一个分页的代码例子_应用技巧

一个分页代码例子 <%''本程序文件名为:Pages.asp%> <%''包含ADO常量表文件adovbs.inc,可从"\Program Files\Common Files\System\ADO"目录下拷贝%> <!--#Include File="adovbs.inc"--> <%''*建立数据库连接,这里是Oracle8.05数据库 Set conn=Server.CreateObject("ADODB.C

webservice如何传输CSV格式数据,最好有代码例子

问题描述 webservice如何传输CSV格式数据,最好有代码例子 webservice如何传输CSV格式数据,最好有代码例子.之前接触的都是JSON和xml. 解决方案 把csv当初文件来传输http://www.cnblogs.com/hoojo/archive/2010/12/20/1911385.html

c语言中setcolor函数的如何使用改变指定字体的颜色?最好给个代码例子谢谢。

问题描述 c语言中setcolor函数的如何使用改变指定字体的颜色?最好给个代码例子谢谢. 好比输出hello world只让world变成红色,而其他的字体不换颜色,也就是只改变指定字体的颜色.能认为的控制. 解决方案 1.可以不用setcolor函数来实现: printf(""hello %sworld%sn""33[0;40;31m""33[0m""); 解决方案二: 我在linux上测试了可以啊,你在什么平台上测试的.

编写PHP脚本清除WordPress头部冗余代码的方法讲解_php技巧

wordpress头部的代码非常多,包括WordPress版本,前后文.第一篇文章.主页meta信息等各种冗余代码,这些对博主来说是没有意义的,也对网站的安全有一定的影响,也一度不知道这些代码是有什么作用.怎么来的和怎么删除. wordpress头部清理代码如下将以下代码插入到你functions.php的文件头部,除WordPress头部大量冗余信息 <?php //remove_action( 'wp_head', 'wp_enqueue_scripts', 1 ); remove_acti

《C++ Templates中文版》——1.6 代码例子和更多信息

1.6 代码例子和更多信息 通过本书的网站,你可以获得本书的所有例子程序和相关信息,网站的地址是:http://www.josuttis.com/tmplbook. 另外,在David Vandevoorde的网站http://www.vandevoorde.com/templates和一些别的网站也可以找到该书的一些信息.在本书后面的参考书目中我们给出了另外的一些可供查询的信息.

php操作redis中的hash和zset类型数据的方法和代码例子_php实例

 前面一篇博客主要是string类型,list类型和set类型,下面hash类型和zset类型 1,hset 描述:将哈希表key中的域field的值设为value.如果key不存在,一个新的哈希表被创建并进行HSET操作.如果域field已经存在于哈希表中,旧值将被覆盖. 参数:key field value 返回值:如果field是哈希表中的一个新建域,并且值设置成功,返回1.如果哈希表中域field已经存在且旧值已被新值覆盖,返回0. 2,hsetnx 描述:将哈希表key中的域field

asp又一个分页的代码例子

一个分页代码例子 <%''本程序文件名为:Pages.asp%> <%''包含ADO常量表文件adovbs.inc,可从"\Program Files\Common Files\System\ADO"目录下拷贝%> <!--#Include File="adovbs.inc"--> <%''*建立数据库连接,这里是Oracle8.05数据库 Set conn=Server.CreateObject("ADODB.C

WordPress开发中短代码的实现及相关函数使用技巧_php技巧

其实实现短代码很简单,我们只需要用到 WordPress 里面的一个函数就可以搞定短代码,外加自己的一个小函数,可以让短代码实现的轻松加愉快. 短代码实现原理就像往 WP 一些动作里加钩子和过滤函数一样, 短代码只是经过封装了的针对文章输出内容的过滤器而已, 没有像有一些主题功能说的那么震撼.那么高深. 下面来一个简单例子: function myName() {//短代码要处理的函数 return "My name's XiangZi !"; } //挂载短代码 //xz为短代码名称