php - Wordpress - 使用 jQuery ajax POST 请求获取用户信息

标签 php jquery wordpress

我正在 WordPress 中工作,尝试使用 ajax 请求通过传递用户 ID 来获取用户数据。

我可以看到用户 ID 通过 AJAX POST 正确发送,但我收到一条内部错误消息,但我不知道为什么。

起初我以为这是因为我试图获取一些已添加到用户配置文件中的自定义字段,但即使我简化了脚本,我仍然收到错误消息。

非常感谢任何帮助!

前端

$('.author').click(function() {

    var id   = $(this).attr('id');
    var temp = id.split('-');
    id = temp[1];

    $.ajax({
            type: 'POST',
            url: 'wp-content/themes/twentyeleven/author_info.php',
            data: {id: id},
            dataType: 'html',
            success: function(data) {
                $('#author-bio').html(data);        
            }
        });     

    return false;
});

author_info.php

$user_id = $_POST['id'];
$forename = get_the_author_meta('user_firstname', $user_id);
$output = $user_id;
echo $output;

错误消息

500(内部服务器错误)jquery.min.js:4

最佳答案

Mathieu 添加了一种可破解的方法来拦截请求并重定向它,这很好。我更喜欢构建返回 json_encoded 数组的 AJAX 响应。

$('.author').click(function() {

  var id   = $(this).attr('id');
  var temp = id.split('-');
  id = temp[1];

  $.ajax({
    url: 'http://absolute.path/wp-admin/admin-ajax.php',
    data: {'action' : 'ajax_request', 'fn': 'getAuthorMeta', 'id': id},
    dataType: 'json',
    success: function(data) {
      //We expect a JSON encoded array here, not an HTML template.       
    }
  });     
  return false;
});

现在我们构建函数来处理我们的 ajax 请求。

首先,我们需要定义 ajax add_action 方法 ->

add_action('wp_ajax_nopriv_ajax_request', 'ajax_handle_request');
add_action('wp_ajax_ajax_request', 'ajax_handle_request');

我们需要在这里使用 add_action 行。我不会解释为什么。您会注意到这里的_ajax_request。这是我们在 AJAX 函数 data: {'action' : 'ajax_request'} 中发送的“action”。我们使用这个钩子(Hook)来验证我们的 AJAX 请求,它可以是您想要的任何内容。

接下来,我们需要构建或运行 ajax_handle_request

function ajax_handle_request(){
  switch($_REQUEST['fn']){
    case 'getAuthorMeta':
      $output = ajax_get_author_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;
  }
}

现在让我们构建函数来实际获取作者元。

function ajax_get_author_meta($id){
  $theMeta = get_the_author_meta([meta_option], $id);
  return $theMeta;
}

其中 [meta_option] 是 a field provided by WP's native get_the_author_meta function .

此时,我们将返回到 success:function(data) , (data) 是对我们返回的 json_encoded 数组的引用。现在,我们可以迭代该对象以获取字段并根据需要将它们输出到页面中。

关于php - Wordpress - 使用 jQuery ajax POST 请求获取用户信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11633739/

相关文章:

jquery - 将事件绑定(bind)到尚未创建的 DOM 元素 (jquery)

jquery - 使用 JQuery 手动调用事件函数

javascript - Magic Line CSS/Javascript 代码 - 添加子导航

php - WordPress "_e()"函数有什么作用?

php - 如何在 Symfony 表单中设置下拉列表子元素的样式

php - 如何在不启用 "Access for less secure apps"的情况下发送电子邮件

javascript - Meteor:Http 响应后,Http 调用在响应上返回未定义

javascript - 如何使用 JS 变量更新 Jquery 日历

php - 随机化 HTML 字符串输出

php - 如何在整个mysql数据库上使用ucwords()php函数?