我是新手。我发现我的代码仅在有管理员登录用户时有效。如何在没有任何用户登录和普通用户登录的情况下处理它。
这是我的js脚本:
jQuery('#username').blur(function() {
jQuery('.username-massage').after('<div class="alert alert-danger usercheck-w" style="color:green;">Checking...</div>');
jQuery.ajax(
{
url: ajax_url,
type: "POST",
dataType: "json",
data: {
action: 'checkUsernameExistentVal',
username: jQuery(this).val(),
},
async: false,
success: function (data)
{
alert(data + ' | '+ data.validation);
jQuery('.usercheck-w').remove();
if (data.validation != 'true'){
jQuery('.username-massage').html('<div class="alert alert-danger usercheck-c" style="color:red;">' + jQuery('#username').attr('data-value') + '</div>');
jQuery("#username").val('');
}else{
jQuery('.usercheck-c').remove();
}
},
});
});
这是我的自定义插件中的functions.php。
add_action('wp_ajax_checkUsernameExistentVal', 'checkUsernameExistentVal');
add_action('wp_ajax_nopriv_checkUsernameExistentVal', 'checkUsernameExistentVal');
function checkUsernameExistentVal(){
$username = $_POST['username'];
$val = checkCOntactUsernameExist($username);
$wp_users = get_users();
$c_user = '';
if ($val){
$usernname_val= 'false';
}else{
foreach ($wp_users as $wp_user) {
if($wp_user->user_login == $username){
$c_user = 'true';
}
}
if($c_user == 'true'){
$usernname_val = 'false';
}else{
$usernname_val = 'true';
}
}
echo json_encode(array("validation" => $usernname_val));
wp_die();
}
我的HTML代码是<input type="text" name="username" id="username" value="">
有没有人对我的案子有所了解?
提前感谢...
我在萤火虫中检查它,它得到了302 Found
答案 0 :(得分:0)
该问题似乎与另一个试图阻止非登录或非管理员用户访问wp-admin区域的插件或函数冲突,因此它从wp-admin / admin-ajax.php重定向并为您提供302响应
尝试逐个停用每个插件并检查问题。
答案 1 :(得分:0)
我将此代码放在函数下面,它可以工作......
if(isset($_REQUEST['action']) && $_REQUEST['action']=='ajaxFunctionMethod'){
do_action( 'wp_ajax_' . $_REQUEST['action'] );
do_action( 'wp_ajax_nopriv_' . $_REQUEST['action'] );
}