我正在测试使用AJAX登录到Wordpress。但是我的PHP代码没有将数据返回给我的ajax脚本。为什么我的PHP代码不会将json数据返回给我的Ajax调用?
我想知道我是否错过了一些东西。
我的模板看起来像这样
// This code is at the top of my template
function authenticate($username, $password) {
global $user;
$data = array();
$data['user_login'] = $username;
$data['user_password'] = $password;
$data['remember'] = false;
$user = wp_signon($data, false);
if (is_wp_error($user)) {
$result = array('login' => false, 'error' => $user->get_error_message());
}
if (!is_wp_error($user)) {
$result = array('login' => true);
}
echo json_encode($result);
}
if (isset($_REQUEST['user_login'])) {
authenticate($_REQUEST['user_login'], $_REQUEST['user_password']);
}
(...) // My HTML starts here
<form name="loginform" action="<?= $_SERVER['REQUEST_URI'] ?>" method="post">
(...)
</form>
这是我的JS代码
$('.login-button').on('click', function(e){
e.preventDefault();
var $form = $('form');
var form_action = $form.attr('action');
var form_data = {
'user_login': $form.find('.user_login').val(),
'user_password': $form.find('.user_psw').val(),
};
$.ajax({
type: "POST",
url: form_action,
data: form_data,
dataType : 'json',
success: function(result){
cl(result); // <-- This is not outputting anything
}
});
});
我可能只是缺少的东西在这里根本,但不知道是什么。
'cl(result); // < - 这不是输出任何东西 - - 是否被调用的函数?你为什么没有'错误'功能呢? *在开发者工具控制台上报告* *。开发工具网络标签说什么?你能看到请求吗?它是否得到适当的回应? – Quentin
你应该考虑正确使用AJAX,在* functions.php *中使用'wp_ajax_'动作钩子和回调函数:https://codex.wordpress.org/AJAX_in_Plugins – rnevius
cl()是'console的自定义函数(快捷方式)。日志()'。我正在使用它进行测试。 – Steven