基于此处接受的答案编写代码:
Wordpress-使用jQuery获取用户信息ajax POST请求
header.php
<?php $admin_ajax_path = ABSPATH . 'wp-admin/admin-ajax.php'; ?>
<script>
var absAjaxPath = "<?php echo $admin_ajax_path; ?>";
</script>
functions.php
add_action('wp_ajax_nopriv_ajax_request', 'ajax_handle_request');
add_action('wp_ajax_ajax_request', 'ajax_handle_request');
function ajax_handle_request(){
switch($_REQUEST['fn']){
case 'getUserMeta':
$output = ajax_user_meta($_REQUEST['id']);
break;
default:
$output = 'That is not a valid FN parameter. Please check your string and try again';
break;
}
$output = json_encode($output);
if(is_array($output)){
return $output;
}else{
echo $output;
}
die();
}
function ajax_user_meta($id){
$theMeta = get_user_meta( $id, 'tel', true );
return $theMeta;
}
我的js文件
jQuery('.list-group-item').click(function() {
var id = jQuery(this).attr('id');
alert(id);
jQuery.ajax({
url: 'http://sub.domain.com/wp-admin/admin-ajax.php',
url: absAjaxPath, //this one returns a not found error
data: {'action' : 'ajax_request', 'fn': 'getUserMeta', 'id': id},
dataType: 'json',
success: function(data) {
//We expect a JSON encoded array here, not an HTML template.
alert(data);
}
});
return false;
});
一旦我单击id设置为2
的元素,alert(id)
就会触发。我有一个用这个id设置的用户。除此之外,什么也没发生。ajax成功函数中的alert(data)
不应该触发吗?
尝试删除dataType:'json'
让ajax自动检测
将die();
或exit();
添加到您通过AJAX调用的PHP函数的最后一行,以防止返回0
。