2017-07-19 117 views
0

如果ajax請求成功,我正在尋找一種方法來調用php函數。在ajax成功加載php函數

基本設置代碼:

wp_register_script('theme-follow-me-ajax', ...); 

    wp_localize_script('theme-follow-me-ajax', 'ajax_setting', array(
     'ajax_url'    => admin_url('admin-ajax.php'), 
     'ajax_follow_error'  => $this->km_follow_me_error(), 
     .... 
    )); 

    wp_enqueue_script('theme-follow-me-ajax');  

內容顯示錯誤,這應該是定製

public function km_follow_me_error() { 

    $content = esc_html__('An error happened. We\'re unable to complete your request.', 'theme'); 

    echo apply_filters('theme_hook_follow_me_error_message', $content); 

} 

Ajax調用:

$.ajax({ 
     url : ajax_setting.ajax_url, 
     type : 'post', 
     data: { 
      action      : 'km_ajax_follow_me', 
      security     : ajax_setting.ajax_nonce, 
      ... 
     }, 
     success: function(data) {   
      $('.km-follow-me').html(ajax_setting.ajax_follow_success).hide().fadeIn('slow');    
      //console.log(ajax_setting.ajax_follow_success); 
     }, 
    }) 

WP wp_ajax_功能

public function addon_ajax_follow_me() { 

     check_ajax_referer('km-ajax-create-nonce', 'security'); 

     ... update user meta ... 

     wp_die(); 

    } 

    $this->loader->add_action('wp_ajax_km_ajax_follow_me', $plugin_public, 'addon_ajax_follow_me'); 

在控制檯中,我得到了null消息,所以它沒有抓取km_follow_me_error函數。

有沒有更好的方法?

+0

您的第一個有效的「調用PHP函數」的ajax調用。這是這樣做的正確方法,沒有辦法直接從腳本執行,因爲PHP在服務器上運行,JS在客戶端上運行,並且在頁面生命週期中的不同時間也運行。因此,要調用另一個PHP函數,您需要重複相同的模式,即另一個Ajax調用另一個URL,它將運行一些PHP來調用您需要的函數,並將結果返回給瀏覽器。 – ADyson

+0

你可以創建一個例子嗎?或者知道更詳細地解釋這個問題的教程?大多數關於wp ajax的教程並未涵蓋此主題(ajax中的ajax)。 – kiarashi

+0

沒有什麼。在第一個ajax調用的成功函數中,使用相同的語法創建另一個ajax調用。對不起,我會認爲這很明顯,你已經知道如何進行ajax調用。順便說一句,這是特定於WordPress的。 – ADyson

回答

1

你做得不對。 PHP函數不能以您想要的方式從Javascript調用/訪問。您有兩個選項可以在您的AJAX成功時調用該函數。

  1. 創建/註冊在WordPress另一個AJAX功能,或許命名爲ajax_follow_success並調用它在以前的AJAX調用的成功。

  2. 確定您的第一個功能WordPress AJAX功能,即addon_ajax_follow_me無論它是成功還是失敗並在那裏調用下一個功能。

+0

如何檢查php函數內是成功還是失敗?你能創建一個例子嗎? – kiarashi

+0

@ kiarashi完全取決於你的邏輯。你把那個AJAX函數叫做什麼?這是完美的執行,你有預期的結果/價值?如果是的話,那麼這是成功的,否則就不會。 – Junaid