AJAX前端点击式增量视图

时间:2012-06-24 作者:Poe

我正在使用一个重定向插件,它将重写添加到永久链接中。我想数一数前端的浏览量,因为我无法加入单曲。因此,php。这似乎很接近,但它并没有增加视图的元值。我不确定在哪里调试,或tr

以下是我目前的代码:

我从抄本上复制了大部分内容,这里还有另一个问题。下面是javascript片段:

jQuery(document).ready(function($) {
$(\'.external\').click(function(event) {
      // had to add the post id to the permalink in loop as url to postid didn\'t work
      var postID = $(this).attr(\'id\');
      var data = {
         action: \'inc_views\',
        post_id: postID
    };
    // since 2.8 ajaxurl is always defined in the admin header and points to admin-ajax.php
    jQuery.post(ajaxurl, data, function(response) {
           //update the custom field value without a page refresh
    });
    });
});
下面是函数中的代码片段。php:

function increment_post_views() {

    global $wpdb; // is this needed?
    $post_id = intval( $_POST[\'post_id\'] );
    $meta_key = \'views-\' . $post_id;
    // increment the views
    $views = get_post_meta( $post_id, $meta_key, true );
    update_post_meta( $post_id, $meta_key, intval( $views ) + 1 );
    die();
}
add_action(\'wp_ajax_inc_views\', \'increment_post_views\');
update: 一些进展

以下代码更新确实会增加post视图计数,但不会继续到实际的post。如果我取消对窗口的注释。位置,它会重定向,但视图计数不会增加。

jQuery(document).ready(function($){
    $(\'.external\').click(function(e){
        e.preventDefault();
        var redirect = $(this).attr(\'href\');
        $.post(ajax_object.ajaxurl, {action:\'inc_views\',post_id:$(this).attr(\'id\')});
        //window.location = redirect;
    });
});
final: 这很有效

jQuery(document).ready(function($){
    $(\'.external\').click(function(e){
        e.preventDefault();
        var redirect = $(this).attr(\'href\');
        $.post(ajax_object.ajaxurl, {action:\'inc_views\',post_id:$(this).attr(\'id\')}, function() {
            window.location = redirect;
        });
        return false;
    });
});

2 个回复
最合适的回答,由SO网友:Poe 整理而成

存储href值并使用window.location = redirect 线路是我让它工作的唯一方式。

jQuery(document).ready(function($){
    $(\'.external\').click(function(e){
        e.preventDefault();
        var redirect = $(this).attr(\'href\');
        $.post(ajax_object.ajaxurl, {action:\'inc_views\',post_id:$(this).attr(\'id\')}, function() {
            window.location = redirect;
        });
        return false;
    });
});

SO网友:Pippin

Try this:

jQuery(document).ready(function($){
    $(\'.external\').click(function(e){
        var redirect = $(this).attr(\'href\');
        $.post(ajax_object.ajaxurl, {action:\'inc_views\',post_id:$(this).attr(\'id\')}, function() {
            return true; // continue with normal anchor link behavior
        });
        return false;
    });
});
结束

相关推荐

如何将JQuery/AJAX放入短码?

这个插件的目的是创建一个列表,用户可以通过向上或向下的投票进行修改。短代码应该显示页面上的列表,并在更新数据库时使用JQuery进行fadeIn和fadeOut。有关该概念的演示,请访问http://bucketlingerwedding.com/80s-music-reception/ (注意:工作代码尚未使用AJAX)。我想把这个插件放在Wordpress存储库中,但AJAX让我很头疼。以下是最新代码。它只显示一个包含空白内容区域的页面。我需要获得这段代码以使用AJAX更新数据库,并避免重新加载页面,