我试图创建一个简单的ajax-基于Wordpress的评论投票系统。我已经成功地构建了大部分,但现在似乎大多数情况下,UPVOUTS都没有注册。有时它们确实会注册(但最多只能注册2个,尽管我没有实现限制),Ajax调用会得到成功的响应(因此我猜PHP函数会被执行)。
你知道我哪里做错了吗(这是我的第一个Ajax项目)?
PHP function:
add_action( \'wp_ajax_comment_meta_update_vote\', \'comment_meta_update_vote\' );
function comment_meta_update_vote( ) {
check_ajax_referer( \'upvote_nonce\' );
$comment_id = $_POST[\'comment_id\'];
$vote_score = get_comment_meta($comment_id , \'vote\', true);
++$vote_score;
update_comment_meta($comment_id , \'vote\', $vote_score, true );
$response[\'type\'] = \'success\';
$response = json_encode( $response );
echo $response;
die();
}
Javascript Function:
function updateVote( comment_id ){
jQuery(function($) {
$.ajax({
type : \'post\',
dataType : \'json\',
url : upvote_ajax.ajax_url,
data : {
action: \'comment_meta_update_vote\',
comment_id: comment_id,
_ajax_nonce: upvote_ajax.nonce
},
success: function( response ) {
if( \'success\' == response.type ) {
// console.log(\'success\');
}
else {
// alert( \'Something went wrong, try logging in!\' );
}
}
}) })};
最合适的回答,由SO网友:Makiomar 整理而成
请试试这个,并告诉我您在控制台中得到了什么。当然可以console.log
这个type
add_action( \'wp_ajax_comment_meta_update_vote\', \'comment_meta_update_vote\' );
function comment_meta_update_vote( ) {
check_ajax_referer( \'upvote_nonce\' );
$comment_id = $_POST[\'comment_id\'];
$vote_score = get_comment_meta($comment_id , \'vote\', true);
$vote_score++;
$updated = update_comment_meta($comment_id , \'vote\', $vote_score );
if($updated){
$msg = \'success\';
}else{
$msg = \'failed\';
}
$response = array(\'type\' => $msg);
wp_json_encode( $response );
die();
}