我正在开发一个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()
,但结果是相同的
答案 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' );