我想对每个select值更改发出AJAX请求,以更新数据库中的实际值。我在一个短代码中编码functions.php
. 我有一个select
下面这样的元素,
echo \'<select name="changeValue" onchange="changeValue(\' . $user->ID . \', this.options[this.selectedIndex])">\'
在短代码的末尾,我会:
?>
<script type="text/javascript">
function changeValue(id, valueElement) {
jQuery.post(
"<?php echo admin_url(\'admin-ajax.php\'); ?>",
{
\'action\': \'update_value\',
\'data\': {
user_id: id,
value: valueElement.value
}
},
function(response){
console.log(response)
}
);
}
</script>
<?
}
add_shortcode(\'the_shortcode\', \'the_shortcode\');
function update_value() {
$user_id = $_POST[\'data\'][\'user_id\'];
$value= $_POST[\'data\'][\'value\'];
echo $user_id . \' - \' . $empresa;
//return update_user_meta($user_id , \'value\', $value);
wp_die();
}
add_action( \'wp_ajax_update_value\', \'update_value\' );
add_action( \'wp_ajax_nopriv_update_value\', \'update_value\' );
我的代码
works when I\'m logged as Admin. 但是如果我以其他用户身份登录,
console.log(response)
返回整个HTML页面内容。我做错了什么?
编辑:另一个区别是,当以管理员身份登录时,admin-ajax.php
退货200 OK
, 而当以用户身份登录时,它会返回302 Found
.