如果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
函數。
有沒有更好的方法?
您的第一個有效的「調用PHP函數」的ajax調用。這是這樣做的正確方法,沒有辦法直接從腳本執行,因爲PHP在服務器上運行,JS在客戶端上運行,並且在頁面生命週期中的不同時間也運行。因此,要調用另一個PHP函數,您需要重複相同的模式,即另一個Ajax調用另一個URL,它將運行一些PHP來調用您需要的函數,並將結果返回給瀏覽器。 – ADyson
你可以創建一個例子嗎?或者知道更詳細地解釋這個問題的教程?大多數關於wp ajax的教程並未涵蓋此主題(ajax中的ajax)。 – kiarashi
沒有什麼。在第一個ajax調用的成功函數中,使用相同的語法創建另一個ajax調用。對不起,我會認爲這很明顯,你已經知道如何進行ajax調用。順便說一句,這是特定於WordPress的。 – ADyson