我在WP作业管理器中有一个类别列表,我在functions.php文件中创建了一个函数
function category_select_list(){
$cat_list = '';
foreach ( get_job_listing_categories() as $cat ) {
$cat_list .= '<option value="'. esc_attr( $cat->slug ).'">'.esc_html(
$cat->name ).'</option>';
}
echo $cat_list;
exit();
}
add_action('wp_ajax_nopriv_category_select_list', 'category_select_list');
add_action('wp_ajax_category_select_list', 'category_select_list');
然后在我的site.js文件中,我检查表单是否在页面中,然后进行ajax调用以从函数返回数据。
jQuery(document).ready(function() { // wait for page to finish loading
if($('#mc4wp-form-1').length){
jQuery.ajax({
type: "POST",
url: "/wp-admin/admin-ajax.php",
data: {
action: 'get_category_list'
},
success:function(output){
alert(output);
},
error: function(errorThrown){
alert(errorThrown);
}
});
}
});
ajax警告零,而不是错误。我不知道问题是什么。我已经改变了php函数,只是回显一个“你好”来测试它不是php函数,但它仍然警告'0'。
任何帮助非常感谢
答案 0 :(得分:1)
您正在调用的操作应与您在function.php(wp_ajax_category_select_list
中设置的操作具有相同的名称,不带前缀wp_ajax_
)。你的js中的动作应该是:action: 'category_select_list'
您还应该使用wp_die()
功能代替exit()
。
有关此主题的更多信息:https://codex.wordpress.org/AJAX_in_Plugins#Ajax_on_the_Administration_Side
答案 1 :(得分:1)
您的行动是&#34; get_category_list&#34;。
所以你的add_action应该是这样的。
add_action('wp_ajax_nopriv_get_category_list', 'category_select_list');
add_action('wp_ajax_get_category_list', 'category_select_list');
感谢。