在Wordpress中调用ajax中的函数

时间:2017-08-08 13:32:37

标签: ajax wordpress

我在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'。

任何帮助非常感谢

2 个答案:

答案 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');

感谢。