我已经阅读了大量类似的问题,但似乎无法弄清楚我遇到的问题。这是我的插件文件(简化为获取返回值):
// 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,但它似乎无法找到动作。我可能错过了一些明显的东西,但我看不到它,任何帮助都会非常感激。
答案 0 :(得分:2)
您的回调函数正在返回一个值。回调应该输出一个值。您需要echo
123而不是返回它。最后,致电wp_die()
。
示例:
function client_login() {
echo 123;
wp_die();
}