前面的AJAX调用主题函数

时间:2014-11-21 作者:enguerranws

下面是我尝试做的:在我的主题函数中调用函数。php从我的主题前面。

因此,在前面:

$(document).on(\'click\',\'.btn-vote\',function(e){
                e.preventDefault();

                var $that = jQuery(this);
                var id = $that.attr(\'data-id\');
                var data = {
                    \'action\': \'voteIncrementer\',
                    \'id\': id
                };
                jQuery.post(ajaxurl, data,function(response){ // ajaxurl is defined in footer.php > var ajaxurl = \'<?php echo admin_url(\'admin-ajax.php\'); ?>\';
                    console.log(response);
                    $that.find(\'.vote-count\').html(response);


                });
            });
以及函数中的相关函数。php:

add_action("wp_ajax_voteIncrement", "voteIncrement");
add_action("wp_ajax_nopriv_voteIncrement", "voteIncrement");

function voteIncrement(){

    echo \'hello\';
    die();
}
退出简单对吗?但问题是:在我的JS中,日志返回0(这意味着wp ajax找不到我的函数)。

我错过了什么?

1 个回复
SO网友:cybmeta

我想你的问题是ajaxurl 对于您的脚本不可用。在加载js代码之前,尝试定义该变量。最好的方法是使用wp\\u localize\\u脚本:

PHP:

add_action( \'wp_enqueue_scripts\', \'cyb_enqueue_scripts\' );
function cyb_enqueue_scripts() {
    //Change the key and url with yours
    wp_register_script(\'my-js\', get_stylesheet_directory_uri(). \'/js/my-js.js\', array( \'jquery\' ) );
    wp_enqueue_script(\'my-js\');

    //Localize script data to be used in my-js.js
    $scriptData = array();
    $scriptData[\'ajaxurl\'] = admin_url( \'admin-ajax.php\' );
    $scriptData[\'action\'] = \'voteIncrement\';

    wp_localize_script( \'my-js\', \'my_js_data\', $scriptData );

}


add_action("wp_ajax_voteIncrement", "voteIncrement");
add_action("wp_ajax_nopriv_voteIncrement", "voteIncrement");

function voteIncrement(){

    echo \'hello\';
    die();
}
js:

(function($){
    $(document).ready(function(){
        $(\'.btn-vote\').on(\'click\',function(e){

            e.preventDefault();
            var $that = jQuery(this);
            var id = $that.attr(\'data-id\');
            var data = {
                \'action\': my_js_data.action,
                \'id\': id
            };

            jQuery.post( my_js_data.ajaxurl, data, function(response) {
                console.log(response);
                $that.find(\'.vote-count\').html(response);
            });

        });
    });
})(jQuery);
此外,我还将更改get的ajax请求中的post方法。它比post更快,您的案例似乎不需要post请求。

结束

相关推荐

Ajax wp_Query条件标记不起作用

我在尝试ajaxwp_query, 我用以下代码成功地获得了主页帖子。然后我补充道conditional tags 修改其他页面的查询,如Category page 问题是conditional tags 没有在这个功能内工作,它一直给我相同的主页帖子。我在中使用此代码function.php 文件:add_action( \'wp_ajax_wp_ajax_posts\', \'wp_ajax_posts_init\' ); function wp_ajax_posts_init() {