jQuery:检查用户名可用性

我在我的Web应用程序上注册时使用jQuery检查用户名可用性。 出于某种原因,而不是将用户数据保存在数据库中,我将注册用户的ID和密码存储在平面文件accounts.txt中。 格式如下:

乔:frt25t5546g
约翰:sdfsdgg

更新

感谢各位朋友的帮助,我终于得到了一个线索,我按照http://roshanbh.com.np/2008/04/check-username-available-ajax-php-jquery.html上的方法进行了操作。

这是我的registration.html的一部分

$(document).ready(function() { $("#uname").blur(function(){ $.post("usernameCheck.php",{user_name:$(this).val()},function(data) { if(data=="no"){ $(this).html("This username already exists"); } else{ $(this).html("Username is available!"); } }); }); }  
Username:

我对jQuery很新,ajax有点事……谢谢!

请勿在客户端执行此操作。 您的密码,即使是加密的,也不应该离开您的服务器。 创建一个服务器端脚本,接受用户名并返回一个布尔值,然后通过AJAX调用它。

另外,要回答您的直接问题,请查找JavaScript方法String.splitString.match

建议不要使用此代码,但仅举例来说,您可以这样做

 $(function(){ $parsed={}; $.ajax({ url: 'userpass.txt', complete: function(data, textStatus, jqXHR) { // get all the data and separate it by rows $.each(data.responseText.split("\n"), function(i,v){ // split the rows by colon sign $parsed[v.split(":")[0]] = v.split(":")[1]; }); } }); // when the user is typing the username $('input#username').keyup(function(){ v = $(this).val(); // check if the username exists if ($parsed[v]) { alert("user exists"); } }); }); 

工作示例: http : //jsfiddle.net/peeter/RszUy/

我希望这个例子能够说明实际做这件事是多么不安全。

HTML:

 

CSS:

 #results { margin-top: 10px; } 

使用Javascript:

 $(document).ready(function() { $("#username").keyup(function(e) { totallySecureWayToCheckIfUserExists(); }); }); function totallySecureWayToCheckIfUserExists() { $.post("/echo/html/", { html: "joe:frt25t5546g\njohn:sdfsdgg\nthis:isstupid" }, function(data) { var users = data.split("\n"); $("#results").html(""); $.each(users, function(index, row) { var username = row.split(":")[0]; var password = row.split(":")[1]; if(username == $("#username").val()) { $("#results").html("").append("

"+"Result found! Username '" + username +"' with the password '"+password+"' exists, you cannot use this username sorry!

"); return false; } else { $("#results").append("

"+"Doesn't match the username: " + username +" (password="+password+")

"); } }); }); }