where do I send my ajax calls

时间:2012-12-02 作者:fefe

努力创建ajax请求。我已经读了几篇文章,但仍然无法让我的插件发送和接收ajax数据。

首先初始化js

    function ajax_load_scripts() {
        // load our jquery file that sends the $.post request
        wp_enqueue_script( "ajax-calls", plugin_dir_url( __FILE__ ) . \'/assets/js/ajax_calls.js\', array( \'jquery\' ) );

        // make the ajaxurl var available to the above script
        wp_localize_script( \'ajax-calls\', \'the_ajax_script\', 
                array( \'ajaxurl\' =>   plugin_dir_url(\'my_plugin.php\') ,
                       \'_ajax_nonce\' => wp_create_nonce( \'my_ajax_nonce\' )
                  ) );
    }
add_action(\'wp_print_scripts\', \'ajax_load_scripts\');
而不是试图在我的插件条目文件中捕获发布的数据

function tipps_processing_function(){
    check_ajax_referer(\'my_ajax_nonce\');

    if ($_POST[\'results\']){
        $token = \'393a9276ae329e00b3739d2e76e52f3b\';
        $tips = json_encode($_POST[\'results\']);
        $save = new Tipspiel();
        $save->save_tips($token, $tips);
            var_dump($_POST[\'results\']);
        return \'OK\';
    }
    //do stuff here
}

add_action(\'wp_ajax_nopriv_add_tipps\', \'text_ajax_process_request\');
我的js

$j("form#tiepspiel").submit(function(e) {
        e.preventDefault(); // this disables the submit button so the user stays on the page            
        var str = $j(this).serialize();
       //alert(decodeURIComponent(str));
        if ($j(\'ul#sortables li\').size() > 10){

            $j( "#dialog-modal" ).dialog({
                    height: 140,
                    modal: true
                });
            return;
        }
        var data = {
                action: \'add_tipps\',
                tips: str,
                _ajax_nonce: the_ajax_script._ajax_nonce

            };

        $j.post(the_ajax_script.ajaxurl, data, function(response) {
            alert(\'Got this from the server: \' + response);
            //$j.cookie("tipspiel", "competitor", { expires: 1 });
           $j(\'form#tiepspiel\').fadeOut(\'slow\', function() {
                // Animation complete.
              });
        });              
    });
但我没有看到我的varibales被丢弃

3 个回复
最合适的回答,由SO网友:Bainternet 整理而成

如果您需要在ajax处理功能中使用WordPress环境和函数,那么您需要向admin ajax发布/获取ajax请求。php,所以更改

\'ajaxurl\' =>   plugin_dir_url(\'my_plugin.php\')

 \'ajaxurl\' =>   admin_url(\'admin-ajax.php\')

SO网友:webaware

您有以下功能,对于未登录的访问者有效:

add_action(\'wp_ajax_nopriv_add_tipps\', \'text_ajax_process_request\');
但如果您也没有此功能,则不会触发对登录用户的调用(我猜您是):

add_action(\'wp_ajax_add_tipps\', \'text_ajax_process_request\');

SO网友:Matthew Boynes

很可能,您的JS没有包含“action”参数,或者没有设置为add_tipps. 下面是一个可以使用的JS示例,from the codex:

<script type="text/javascript" >
jQuery(document).ready(function($) {
    var data = {
        action: \'add_tipps\',
        whatever: 1234
    };
    $.post(ajaxurl, data, function(response) {
        alert(\'Got this from the server: \' + response);
    });
});
</script>

结束

相关推荐

如何将AJAX与复选框类别一起使用?

如何构建搜索筛选器(something like this) 用WordPress?我有一个自定义的帖子类型名称:“Locatii”。这是一种带有类别的自定义帖子类型。例:1类、2类。。。等等如何实现AJAX,以便在单击Cat 1(复选框)和Cat 2时检索该类别中的帖子,而无需搜索按钮。