所以我正在进行Ajax调用,首先会检查该帖子ID是否已经投票。
目前我正在研究PHP以首先获取帖子ID,如果它是空的设置它或者如果它不是空的来附加ID。
问题:除非我使用implode或explode方法,否则它似乎无法回调javascript。虽然如果我要更新页面,它会注册投票。
这是PHP文件。对于user Id
,我只是将其设置为我的管理员ID以开始。
function my_user_vote() {
$user_id = 1;
$pageVoted = $_REQUEST["post_id"];
$currentPosts = get_user_meta($user_id, 'pages_voted_on');
if (empty($currentPosts)) {
// Empty create single array
$postsVotedOn[] = $pageVoted;
} else {
$postsVotedOn = explode('|', $currentPosts);
$postsVotedOn[] = $pageVoted;
}
$boo = implode("|", $pageVoted);
update_user_meta( $user_id, 'pages_voted_on', $boo);
if ( !wp_verify_nonce( $_REQUEST['nonce'], "my_user_vote_nonce")) {
exit("No naughty business please");
}
$vote_count = get_post_meta($_REQUEST["post_id"], "votes", true);
$vote_count = ($vote_count == '') ? 0 : $vote_count;
$new_vote_count = $vote_count + 1;
$vote = update_post_meta($_REQUEST["post_id"], "votes", $new_vote_count);
if($vote === false) {
$result['type'] = "error";
$result['vote_count'] = $vote_count;
}
else {
$result['type'] = "success";
$result['vote_count'] = $new_vote_count;
}
if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
$result = json_encode($result);
echo $result;
}
else {
header("Location: ".$_SERVER["HTTP_REFERER"]);
}
die();
}
这是javascript。
jQuery(document).ready( function() {
jQuery(".user_vote").click( function() {
post_id = jQuery(this).attr("data-post_id")
nonce = jQuery(this).attr("data-nonce")
jQuery.ajax({
type : "post",
dataType : "json",
url : myAjax.ajaxurl,
data : {action: "my_user_vote", post_id : post_id, nonce: nonce},
success: function(response) {
if(response.type == "success") {
jQuery(".vote_counter").html("Votes: " + response.vote_count);
jQuery(".voteUpButton").html('<div class="button btnGreen">Thank you!</div>');
alert("Cooommmon");
console.log(response.vote_count);
}
else {
alert("Your vote could not be added")
}
}
})
})
})
答案 0 :(得分:1)
我刚刚对您的代码进行了快速测试,发现了一些引发错误的问题:
1。这一行:
$currentPosts = get_user_meta($user_id, 'pages_voted_on');
应该是
$currentPosts = get_user_meta($user_id, 'pages_voted_on', true);
2。我相信这一行:
$boo = implode("|", $pageVoted);
应该是
$boo = implode("|", $postsVotedOn);
说明:
true
参数get_user_meta
返回一个数组。你不能explode
一个阵列。
http://codex.wordpress.org/Function_Reference/get_user_meta $pageVoted
是要添加的页面的ID,而$postsVotedOn
是您希望将其附加到的实际列表。