Wordpress - Admin-AJAX不保存元数据

时间:2013-11-25 00:36:01

标签: ajax wordpress

尝试在Wordpress Admin中使用内置的AJAX功能。我一直在关注this教程,但是当我运行jQuery脚本时,数据没有保存到用户元。

<?php
    add_action( 'admin_footer', 'ring_jquery' );

    function ring_jquery() {
?>
<script type="text/javascript">
    jQuery('.ring-submit').on('click', function(){
        var u = jQuery(this).attr('user'),
            c = jQuery('.agt_ringc[user="'+u+'"]').val(),
            x = jQuery('.agt_ringx[user="'+u+'"]').val(),
            formData = 'ringu='+u+'&ringc='+c+'&ringx='+x;
        jQuery.ajax({
            url: '<?php echo admin_url('admin-ajax.php'); ?>',
            type: 'POST',
            data: formData,
            success: function(e){

                jQuery('.success[user="'+u+'"]').fadeIn(400).delay(400).fadeOut(400);

            },
            error: function(){

                jQuery('.fail[user="'+u+'"]').fadeIn(400).delay(400).fadeOut(400);

            }
        });
    });

</script>
<?php
} //End ring_jquery()

add_action('wp_ajax_my_action', 'ring_callback');

function ring_callback() {
    global $wpdb; // this is how you get access to the database

    $ringu = $_POST['ringu'];
    $ringc = $_POST['ringc'];
    $ringx = $_POST['ringx'];

    update_user_meta($ringu,'agt_ringc',$ringc);
    update_user_meta($ringu,'agt_ringx',$ringx);

    die(); // this is required to return a proper result
}
?>

2 个答案:

答案 0 :(得分:1)

您需要在数据字符串中使用action : my_action,或按照codex:

var data = {
        action: 'my_action',
        whatever: 1234
    };

答案 1 :(得分:0)

问题是,正如@ObmerkKronen指出的那样,我在数据字符串中缺少一个动作定义(告诉AJAX页面运行哪个函数)。

formData = 'action=ring_callback&ringu='+u+'&ringc='+c+'&ringx='+x;

我还更改了动作挂钩的名称以匹配该功能的名称。我不知道这是否必要,但我找到的其他一些事情也是如此,我想适应。

add_action('wp_ajax_ring_callback', 'ring_callback');