2017-07-19 120 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