jQuery Ajax函数无法在Wordpress中运行

时间:2017-03-18 05:48:01

标签: jquery ajax wordpress

我为我的网站制作了一种投票系统插件。当用户点击'喜欢'按钮,jQuery ajax应该将该点击发送到functions.php中我称为vote_funct的函数。 jQuery ajax脚本返回成功消息,但该函数根本没有被调用。我不明白我做错了什么。下面是我的jQuery ajax代码:

(function($){  //wordpress jquery no conflict starts here
 $(document).ready( function($) {
     var counter;
     var id;
     var ajaxurl = MyAjax.ajax_url;

     $('.fa-plus').click(function(){
        counter = 0;
        id      = $(this).closest('div').prop("id");
        counter = counter+1;
        $(this).css('color','green');
        $(this).removeClass('fa fa-plus');
        $(this).addClass('fa fa-check');        

        $.ajax({
            url    : ajaxurl,
            type   : "POST",
            data   : {
                        'action' : 'vote_funct',
                        'counter': counter,
                        'id'     : id
                        },
        success:function(data){
        console.log("counter");
    }
        }).error(function(xhr, status){
            switch(status){
                case 404:
                    alert("404 not found");
                    break;
                case 500:
                    alert("500 server error");
                    break;
                case 0:
                    alert("0 request aborted");
                    break;
                default:
                    alert("unknown " + ajaxurl);

            }
    });
}) ;     
}); 
})(jQuery);  

然后我的vote_funct位于functions.php

$myfile = fopen("data.txt", "w") or die("Unable to open file!");
fwrite($myfile, json_encode($_POST));

 function vote_funct(){
              $id    = $_POST['id'];
              $votes = $_POST['counter'];

            if( !empty( $_POST ) ){
              global $wpdb;
               $wpdb->query( $wpdb->prepare("UPDATE fwwp_votes SET votes = votes +1 WHERE id = $id") ); 
            }
          echo true;
          die();
        }
    add_action( 'wp_ajax_nopriv_vote_funct', 'vote_funct' );
    add_action( 'wp_ajax_vote_funct', 'vote_funct' );

仅供参考data.txt正在正确写入所有数据。

1 个答案:

答案 0 :(得分:0)

根据您使用的jQuery版本,可能不推荐使用“错误”函数(从jQuery 3.0开始删除)..

如果是这样,请尝试更改此..

}).error(function(xhr, status){

到此(http://api.jquery.com/deferred.fail/)..

}).fail(function(){