AJAX没有返回任何东西 - Wordpress

时间:2015-02-21 12:44:00

标签: php jquery ajax wordpress

将我的代码基于接受的答案:

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)不应该触发吗?

2 个答案:

答案 0 :(得分:0)

die();exit();添加到您通过AJAX调用的PHP函数的最后一行,以防止返回0

答案 1 :(得分:0)

尝试删除dataType:'json' 让ajax自动检测