Wordpress AJAX请求始终返回0

时间:2016-02-08 15:34:52

标签: jquery ajax wordpress

我正在开发一个WordPress主题,在我的前端,当用户将鼠标悬停在帖子预览上时,我需要显示一些信息。我使用AJAX来检索所需的信息,而不是为每个帖子加载额外的数据,但我的所有AJAX查询都返回0。

这是我的functions.php的摘录:

add_action( 'wp_ajax_nopriv_pgsc_ajax_get_supporters', 'pgsc_ajax_get_supporters' );
add_action( 'wp_ajax_pgsc_ajax_get_supportes', 'pgsc_ajax_get_supporters' );

function pgsc_ajax_get_supporters()
{
  $politicianId = $_POST['postId'];
  $field = get_field_object('lista', $postId);
  $values = get_field("lista", $postId);
  $lists = array();
  foreach($values as $val) {
    $listName = $field["choices"][$val];
    $logo = get_field("logo", $val)["sizes"]["thumbnail"];
    $lists[$listName] = array("permalink" => get_post_permalink($val), "logo" => $logo);
  }
  wp_reset_query();
  echo json_encode($lists);
  wp_die();
}

这是我的JavaScript中的AJAX调用:

function open_supporter_bar(postId, barId)
{
  var bar = "#bar_" + barId;
  jQuery(bar).hide("slow");
  jQuery(bar).html("");
  jQuery.ajax({
    url : pgsc.ajaxurl,
    type : "POST",
    data : {
      action : "pgsc_ajax_get_supporters",
      postId : postId
    },
    success : function(result) {
      alert(result);
      html = compose_supporter_list(result);
      jQuery(bar).html(html);
      jQuery(bar).show("slow");
    },
    error : function(error) {
      alert("Check the error log!");
    }
  });
}

我已经尝试用wp_die()替换die(),但结果是相同的

2 个答案:

答案 0 :(得分:3)

使用wp_send_json为wordpress ajax请求输出json

$x

答案 1 :(得分:1)

你在动作挂钩上拼错了你的功能。

add_action( 'wp_ajax_pgsc_ajax_get_supportes', 'pgsc_ajax_get_supporters' );

应该是:

add_action( 'wp_ajax_pgsc_ajax_get_supporters', 'pgsc_ajax_get_supporters' );