2017-08-08 17 views
0

我在WP作業管理類別列表,我在functions.php文件調用從阿賈克斯的功能在WordPress的

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

任何幫助非常感謝

回答

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

+0

謝謝我沒有意識到我正在調用一個不存在的函數...... DOH!感謝您指出了這一點。儘管如此,我仍然需要wp_ajax前綴 –

1

你的行動是 「get_category_list」。

所以你的add_action應該是這樣的。

add_action('wp_ajax_nopriv_get_category_list', 'category_select_list'); 
add_action('wp_ajax_get_category_list', 'category_select_list'); 

謝謝。