2017-07-18 60 views
0

我已經閱讀了大量類似的問題,但似乎無法弄清楚我遇到的問題。這是我的插件文件(簡化只是爲了得到一個返回值):插件返回的WordPress Ajax 0

// add JS file 
add_action('wp_enqueue_scripts', 'ajax_patient_login_enqueue_scripts'); 
function ajax_patient_login_enqueue_scripts() { 
    wp_enqueue_script('patient-login-ajax-scripts', plugins_url('/js/scripts.js', __FILE__), array('jquery'), '1.0', true); 

    // this sets up hooks that the javascript file can use to access ajax calls 
    wp_localize_script('patient-login-ajax-scripts', 'patientlogin', array(
     'ajax_url' => admin_url('admin-ajax.php') 
    )); 
} 

// login user 
add_action('wp_ajax_nopriv_client_login', 'client_login'); 
add_action('wp_ajax_client_login', 'client_login'); 
function client_login() { 
    return 123; 
} 

我的JavaScript加載正確的,因爲我可以通過它在瀏覽器中的步驟。這個問題似乎歸結爲其訪問「client_login」操作的能力。這裏的JS:

// handle login 
function handleLogin() { 
    $.ajax({ 
     url: patientlogin.ajax_url, 
     data: { action: 'client_login' }, 
     success: function(result) { 
      // other functions... 
     } 
    }); 
} 

'結果'總是0,我不明白爲什麼。瀏覽器似乎沒有任何問題找到ajax_url,但似乎無法找到該操作。我可能錯過了一些明顯的東西,但我看不到它,任何幫助將不勝感激。

回答

2

您的回調函數正在返回一個值。回調應該輸出一個值。你需要echo 123而不是返回它。最後,請致電wp_die()

例子:

function client_login() { 
    echo 123; 
    wp_die(); 
} 

文檔:https://codex.wordpress.org/AJAX_in_Plugins

+0

我知道它是簡單的東西。謝謝!!! – Nate