如何使用Javascript验证用户名?
我想知道如何使用Javascript验证用户在创建帐户时输入的用户名是否已经存在于数据库中,并要求用户键入任何其他用户名 答案是AJAX。如果必须对数据库进行验证,则需要调用服务器。在不重新加载页面的情况下实现这一点(编辑:正确)的唯一方法是AJAX。如何实现它将取决于您使用的javascript库(如果有的话)以及您的服务器是什么样的。我建议您对它进行一些搜索和阅读-这是一个非常常见的用例。答案是AJAX。如果必须对数据库进行验证,则需要调用服务器。在不重新加载页面的情况下实现这一点(编辑:正确)的唯一方法是AJAX。如何实现它将取决于您使用的javascript库(如果有的话)以及您的服务器是什么样的。我建议您对它进行一些搜索和阅读-这是一个非常常见的用例如何使用Javascript验证用户名?,javascript,ajax,validation,Javascript,Ajax,Validation,我想知道如何使用Javascript验证用户在创建帐户时输入的用户名是否已经存在于数据库中,并要求用户键入任何其他用户名 答案是AJAX。如果必须对数据库进行验证,则需要调用服务器。在不重新加载页面的情况下实现这一点(编辑:正确)的唯一方法是AJAX。如何实现它将取决于您使用的javascript库(如果有的话)以及您的服务器是什么样的。我建议您对它进行一些搜索和阅读-这是一个非常常见的用例。答案是AJAX。如果必须对数据库进行验证,则需要调用服务器。在不重新加载页面的情况下实现这一点(编辑:正
元素的模糊事件附加侦听器
<form ...>
...
<input type="text" name="username" id="input-username" />
<p class="error"></p>
...
$("#input-username").blur(function() {
$.post("/check-username.php", { username: $(this).val() }, function(data) {
if ("0" == data) { /* username in use */
$(this).next("p").text("This username is already in use.</p>");
} else { /* username is fine */
$(this).next("p").empty();
}
});
});
<?php
$username = $_POST['username'];
// check whether given username exists in database
$usernameExists = ...;
echo $usernameExists ? '0' : '1'; // 0 if exists, 1 if not.
...
...
$(“#输入用户名”).blur(函数(){
$.post(“/check username.php”,{username:$(this.val()},函数(数据){
如果(“0”==数据){/*正在使用的用户名*/
$(this).next(“p”).text(“此用户名已在使用中。”);
}否则{/*用户名就可以了*/
$(this.next(“p”).empty();
}
});
});
为
元素的模糊事件附加侦听器
使用AJAX向服务器发送请求(字段值作为参数)
在服务器端,检查给定的用户名是否已在使用中
根据服务器的响应显示(或否),此用户名已在消息中使用
jQuery(我太懒了,不适合纯JS)+PHP示例代码:
<form ...>
...
<input type="text" name="username" id="input-username" />
<p class="error"></p>
...
$("#input-username").blur(function() {
$.post("/check-username.php", { username: $(this).val() }, function(data) {
if ("0" == data) { /* username in use */
$(this).next("p").text("This username is already in use.</p>");
} else { /* username is fine */
$(this).next("p").empty();
}
});
});
<?php
$username = $_POST['username'];
// check whether given username exists in database
$usernameExists = ...;
echo $usernameExists ? '0' : '1'; // 0 if exists, 1 if not.
...
...
$(“#输入用户名”).blur(函数(){
$.post(“/check username.php”,{username:$(this.val()},函数(数据){
如果(“0”==数据){/*正在使用的用户名*/
$(this).next(“p”).text(“此用户名已在使用中。”);
}否则{/*用户名就可以了*/
$(this.next(“p”).empty();
}
});
});
Ajax可能不是唯一的解决方案,因为用户名通常是公共的。一种简单的方法是在某个点上创建一个RDF/XML文档(只随每个新用户的添加而更新),其中包含站点上所有用户的列表,您可以轻松地使用Javascript DOM遍历该列表,查看该用户是否已经在使用中。你还让他们支付计算能力,而不是你,这取决于你有多好,这是一个优势还是一个劣势。Ajax可能不是唯一的解决方案,因为用户名通常是公开的。一种简单的方法是在某个点上创建一个RDF/XML文档(只随每个新用户的添加而更新),其中包含站点上所有用户的列表,您可以轻松地使用Javascript DOM遍历该列表,查看该用户是否已经在使用中。你也让他们支付计算能力,而不是你,这取决于你有多好,这是一个优势还是一个劣势。就个人而言,我会使用JQuery验证插件来简化事情。
但一般来说,它将包含一个对服务器(即JSON对象)的带有用户名的小AJAX请求,并在数据库中进行“搜索”,在用户点击文本字段中的enter或tab后返回true/false(附加一个事件侦听器)。然后在回调响应中更改所选的DOM元素,以向用户指示帐户名是否已存在于数据库中 就个人而言,我会使用JQuery验证插件来简化事情。
但一般来说,它将包含一个对服务器(即JSON对象)的带有用户名的小AJAX请求,并在数据库中进行“搜索”,在用户点击文本字段中的enter或tab后返回true/false(附加一个事件侦听器)。然后在回调响应中更改所选的DOM元素,以向用户指示帐户名是否已存在于数据库中 简短的回答;只有javascript:那么,在客户端javascript检查之后,有什么可以阻止某人使用tamperdata发布自己的用户名呢?@Rook:这是一个不错的观点,但不用说客户端检查不应该是任何事情的最后一道防线。这并不意味着不应该进行客户端验证。它有助于用户,而不是数据完整性;只有javascript:那么,在客户端javascript检查之后,有什么可以阻止某人使用tamperdata发布自己的用户名呢?@Rook:这是一个不错的观点,但不用说客户端检查不应该是任何事情的最后一道防线。这并不意味着不应该进行客户端验证。它对用户很有帮助,而不是数据完整性。不重新加载页面的唯一方法是AJAX。好。。。从技术上讲,AJAX不是唯一的解决方案,但它是唯一值得考虑的。@Crozin:没错。您可以使用页面加载每个用户名,或者使用AJAX风格的东西,比如古怪的iframe。有无数种错误的方法可以做到这一点,唯一不用重新加载页面的方法是AJAX。好。。。从技术上讲,AJAX不是唯一的解决方案,但它是唯一值得考虑的。@Crozin:没错。你可以用页面加载每个用户名之类的操作