将我的代码基于接受的答案:
Wordpress - fetch user info using jQuery ajax POST request
的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设置为alert(id)
的元素后,2
会触发。我有一个用户设置了该ID。除此之外,没有任何反应。 ajax成功函数中的alert(data)
不应该触发吗?
答案 0 :(得分:0)
将die();
或exit();
添加到您通过AJAX调用的PHP函数的最后一行,以防止返回0
。
答案 1 :(得分:0)
尝试删除dataType:'json'
让ajax自动检测