检查AJAX中是否存在用户名

时间:2012-10-08 作者:Jacek Jagiełło

我已经为WordPress多站点安装创建了一个自定义注册表。它允许注册新的博客和用户。我想用ajax检查一下给定的用户名是否可用。这就是我目前的情况:

add_action( \'wp_footer\', \'pb_ajax_add_js\' );

function pb_ajax_add_js() {

// add script to the footer
wp_enqueue_script( \'pb_ajax\',
    plugin_dir_url( __FILE__ ).\'js/script.js\',
    array(\'jquery\'), BOJ_ARM_VERSION, true
);

//Get protocol of the current page.
$protocol = isset( $_SERVER["HTTPS"]) ? \'https://\' : \'http://\';

// Display the admin-ajax.php using the same protocol as the current page.
$params = array(
  \'ajaxurl\' => admin_url( \'admin-ajax.php\', $protocol )
);
wp_localize_script( \'pb_ajax\', \'pb_ajax\', $params );
}
服务器端请求处理:

// Ajax request handling.
add_action(\'wp_ajax_nopriv_boj_arm_ajax\', \'pb_check_username\');
add_action(\'wp_ajax_boj_arm_ajax\', \'pb_check_username\');

function pb_check_username() {
$username = $_REQUEST[\'usr\'];
echo $username;

die();
}
和jQuery脚本(注意:在此版本中,验证是在单击链接之后进行的)

(function($) {
    $(\'.check-username\').click(function(){
        var link = this;
        $(link).html(\'sprawdzanie...\');
        // href="\' . get_permalink() . "#more-{$post->ID}"
        var usr = $("#site-addres-input").attr(\'value\');

        var data = {
            action: \'boj_arm_ajax\',
            usr: usr
        };

        $.get(boj_arm.ajaxurl, data, function(data){
            $(link).after(data).remove();
        });
        return false;
    });
})(jQuery);
脚本未完成。它必须检查用户名是否存在,并返回true或false。你能帮帮我吗?

2 个回复
SO网友:EAMann

问题在于jQuery选择器:

var usr = $("#site-addres-input").attr(\'value\');
将获取输入元素的默认值。通常这将是空白的,因为您没有提前设置它。您需要使用:

var usr = $("#site-addres-input").val();
我还注意到你正在使用#site-addres-input, 但是“address”的末尾有两个s。不确定这是否也会给您带来问题。。。

SO网友:Rutwick Gangurde

您可以使用此功能:username_exists 检查用户是否存在。像这样:

add_action(\'wp_ajax_nopriv_boj_arm_ajax\', \'pb_check_username\');
add_action(\'wp_ajax_boj_arm_ajax\', \'pb_check_username\');

function pb_check_username() {
    $username = $_REQUEST[\'usr\'];
    if(username_exists($username))
        echo 1;
    else
        echo 0;
    die();
}
请阅读codex以了解此功能的正确用法,因为您需要包含一个文件。

结束

相关推荐

使用AJAX在点击时加载每个帖子的评论

我正在开发一个使用滑块显示博客帖子的主题。滑块下方是一个分页,显示方式类似于时间线,用日期而不是页码,调用相应的博客文章。我想显示每个帖子的评论,但在滑块之外。因此,我的标题中有以下代码,用于使用ajax获取注释:::已编辑(现在使用wp-admin/admin-ajax.php 处理请求,如下所示):$(\".timeline-entry a\").live(\'click\', function(event) { event.preventDefault(); $.ajax({