我試過了所有我能想到的,但我無法獲得Select2 Ajax來調用Wordpress wp_ajax操作。Select2 Ajax不在Wordpress中調用wp_ajax_(Javascript錯誤,不是WP錯誤)
這裏是我的functions.php(不包括入隊和腳本的本地化):
function get_list_posts() {
$search = sanitize_text_field($_REQUEST['list_search']);
$post_type = sanitize_text_field($_REQUEST['post_type']);
$post_query = new WP_Query(
array(
'post_type' => $post_type,
'post_status' => 'published',
's' => $search
)
);
// Bail if we don't have any results
if (empty($post_query->results)) {
wp_send_json_error($_POST);
}
$results = array();
foreach ($post_query->results as $post) {
$results[] = array(
'id' => $post->ID,
'text' => $post->title
);
}
wp_send_json_success($results);
die();
}
add_action('wp_ajax_list_posts', 'get_list_posts');
add_action('wp_ajax_nopriv_list_posts', 'get_list_posts');
而且我的javascript:
$('#list-search').select2({
minimumInputLength: 3,
ajax: {
url: ajax_post_params.ajax_url,
dataType: 'json',
data: function (term, page) {
post_type = $(this).attr("data-post-type");
return {
action: 'list_posts',
list_search: term,
post_type: post_type
};
},
processResults: function (data, params) {
console.log(data);
console.log(params);
params.page = params.page || 1;
return {
results: data.items,
pagination: {
more: (params.page * 30) < data.total_count
}
};
},
cache: true
}
});
在調試AJAX獲取到的數據和功能'返回',但從來沒有讓它調用動作(或至少從未運行該功能的PHP)。任何建議,我怎麼能找出這是什麼問題?我相信這是一個javascript錯誤,而不是一個Wordpress錯誤,這就是爲什麼我在stackoverflow中,但請糾正我,如果我錯了。
你的JS控制檯中是否有錯誤?請求是否在您的網絡標籤中生成任何錯誤?有沒有生成請求? –
不,我不能在控制檯或網絡選項卡中找到它生成的任何錯誤。 – lawdawg