尝试在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
}
?>
答案 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');