我需要一个upvote系统,在一个帖子列表中,在一个页面上有多个upvote按钮。我拿了一些用ids上的click bind编写的代码,作为第一步,我试图用类和$(this)重写它。它仍然没有在列表中工作(我需要在我认为的ajax中添加$(this))但是在单个帖子中也没有 - 这是当前的问题。 php代码返回成功,但是在我重新加载之前不会更新类似的计数 - 响应为空
的jQuery
// ajax get the upvote click
jQuery( '.first' ).bind( 'click', function(){
jQuery(this).find( '.vmp_message' ).empty();
// error: function(req, err){ console.log('my message' + err); }
jQuery.ajax( {
url:ajax_object.ajax_url,
method:'get',
dataType:'json',
data:{
action:'count_vote_090813',
post_id:ajax_object.post_id,
type:'upvote'
},
success:function( response ){
if ( 'error' == response.type ){
console.log( response );
//jQuery( '#vmp_message' ).html( response.html );
}else if( 'success' == response.type ){
jQuery(this).find( '.vmp_message' ).html( "Success." );
}else{
}
}
} );
} );
PHP
$response_type = 'success';
$query = "SELECT * FROM `" . TABLE_2 . "` WHERE `post_id` = " . $post_id;
$result = $wpdb->get_results( $query, ARRAY_A );
if ( 'upvote' == $voting_type ){
$html = $result[ 0 ][ 'upvote_count' ];
有人可以解释一下 1 /如何调试这个?如何在控制台中看到什么是hapenning? 2 /如何将ajax绑定到$ this(如果那是错误的)
编辑:
我找到了ajax问题。问题是帖子ID信息,如果单个页面上有多个帖子,则必须以post_id:ajax_object.post_id,
之外的其他方式完成。我做了什么:
在模板中
<div class="bloodylike">
<a href='javascript:void(0)' data-postid='<?php echo $my_postid; ?>' class='up_count' title='Click to like this post'>
LIKE
</a>
</div>
在jQuery中
var postid = jQuery(this).find( 'a' ).data( "postid" );
...
...
data:{
action:'count_vote_090813',
post_id:postid,
type:'upvote'
对于回复,我刚刚添加了一行来重新加载它,看看我以后是否会提出一些不那么蹩脚的东西。