[WordPress] 内破の Ajax 呼び出しを改

スポンサーリンク

質問

は、最初その記事 ID は既に投票されてかどうかを参照してくださいチェックを Ajax 呼び出しを作ってるんだだから

現在私はちょうど最初の記事 id を取得、それが空の場合や ID を追加する空でないかどうかは PHP に取り組んでいます。

ここで質問: または爆発、javascript の呼び出しを確認していないメソッド内破処理を使用するときを除く。投票を登録がページを更新していた場合

PHP ファイルです。

user Id

をしただけに設定私の admin 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")
            }
         }
      })   

   })

})

の答え

私はちょうどあなたのコードで簡単なテストを行なったし、エラーをスローする問題のカップルを発見:

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);

説明:

  1. true

    なし

    get_user_meta

    の引数の配列を返します。

    explode

    を配列することはできません。 http://codex.wordpress.org/Function_Reference/get_user_meta

  2. $pageVoted

    は追加するページの id、それに追加したい

    $postsVotedOn

    は、実際のリスト

http://stackoverflow.com/questions/28520114/implode-breaks-ajax-call

スポンサーリンク

Leave a Reply