我已经按照本教程创建了一个自定义 ajax 登录,但我遇到了问题。我正在使用这个 jquery 代码来发送 ajax 请求:
function ajaxLogin(form) {
$.ajax({
type: 'post',
dataType: 'html',
url: loginScript.ajaxurl,
data: "action=cb_register_login_submit&" + $(form).serialize(),
global: false,
success: function( msg ){
//location.reload( true ); // This could be nicer
handleLoginReturn(msg);
},
error: function(er) {
handleErrorReturn(er);
}
});
}
function handleLoginReturn(msg) {
console.log(msg);
}
和以下 PHP 函数来处理登录过程:
<?php
function cb_register_login_submit() {
$creds = array();
$creds['user_login'] = $_POST['username'];
$creds['user_password'] = $_POST['pwd'];
if ( isset( $_POST['remember'] ) ) {
$creds['remember'] = true;
}
$user = wp_signon( $creds, false );
if ( is_wp_error( $user ) ) {
echo 'error';
} else {
echo 'success';
}
die(0);
}
?>
所以问题是,当我输入错误的登录信息时,实际上我确实得到了通过 ajax 成功回调返回的字符串“error”但是当我输入正确的日志信息时,整个页面的 html(我认为是wordpress 仪表板代码)通过成功回调而不是字符串“成功”返回。事实上,字符串“success”似乎没有在成功回调的任何地方返回。
知道这里有什么问题吗?我假设 wp_signon 函数可能正在返回我不知道的成功数据。任何帮助将非常感激!