我在注册之前创建了用于检查用户名的脚本,但它不起作用。它返回错误。它是functions.php中的脚本:
function check_user_login_init(){
/* Подключаем скрипт для проверки */
wp_register_script('ajax-login-script', get_template_directory_uri() . '/js/ajax-login-script.js', array('jquery') );
wp_enqueue_script('ajax-login-script');
/* Локализуем параметры скрипта */
wp_localize_script( 'ajax-login-script', 'ajax_check_login_object', array(
'ajaxurl' => admin_url( 'admin-ajax.php' ),
'loadingmessage' => __('Verified data, wait a second...')
));
// Разрешаем запускать функцию check_user_login() пользователям без привелегий
add_action( 'wp_ajax_nopriv_check_user_login', 'check_user_login' );
}
if (!is_user_logged_in()) {
add_action('init', 'check_user_login_init');
}
function check_user_login(){
// Первым делом проверяем параметр безопасности
check_ajax_referer( 'ajax-login-nonce', 'security' );
// Получаем данные из поля #user_login формы и проверяем их
$username = $_REQUEST['username'];
$sanitized_user_name = sanitize_user( $username, 1 );
if ( username_exists( $sanitized_user_name )) {
echo json_encode(array('avaliblename'=>false, 'message'=>__('Choose another name!')));
} else {
echo json_encode(array('avaliblename'=>false, 'message'=>__('OK!')));
}
die();
exit;
}
这是JS:
jQuery(document).ready(function($) {
$('.register_box #registration #user_login').on('keyup', function(e){
$.ajax({
beforeSend: function(){
$('.register_box .status_registration').show().text(ajax_login_object.loadingmessage);
},
type: 'POST',
dataType: 'json',
url: ajax_check_login_object.ajaxurl,
cache: false,
data: {
'action': 'check_user_login', //calls wp_ajax_nopriv_checkuserlogin
'username': $('.register_box #user_login').val()
},
dataFilter: function(){
$('.register_box .status_registration').html('Data processed...');
},
error: function(){
$('.register_box .status_registration').html('Something wrong...');
},
success: function(data){
$('.register_box .status_registration').html(data.message);
}
});
e.preventDefault();
});
});
当我尝试在谷歌浏览器中输入用户名时,它返回错误:
未捕获的类型错误:无法读取 null 的属性“消息”
你能帮忙吗?