ajax验证用户名是否存在 php,Ajax实时验证用户名、邮箱等是否已经存在

利用

9f335a3b58f18a69e9e0c20f3c84946a.png

最终结果截图:

1971590ad3aa46850c136236f072f8d3.png

6583ddb68090f95cf7ae2673134c7747.png

代码如下:

Ajax检测用户名

<?

代码解释:

通过ajax的open方法,将用户输入”用户名“通过id传递给进来(即$_GET[id]),此时将对指定的数据库表中进行查询,检查是否有存在该“用户名”

ajax.js

// JavaScript Document

var XHR; //定义一个全局对象

function createXHR(){ //首先我们得创建一个XMLHttpRequest对象

if(window.ActiveXObject){//IE的低版本系类

XHR=new ActiveXObject('Microsoft.XMLHTTP');//之前IE垄断了整个浏览器市场,没遵循W3C标准,所以就有了这句代码。。。但IE6之后开始有所改观

}else if(window.XMLHttpRequest){//非IE系列的浏览器,但包括IE7 IE8

XHR=new XMLHttpRequest();

}

}

function checkname(){

var username=document.myform.user.value;

createXHR();

XHR.open("GET","checkname.php?id="+username,true);//true:表示异步传输,而不等send()方法返回结果,这正是ajax的核心思想

XHR.onreadystatechange=byhongfei;//当状态改变时,调用byhongfei这个方法,方法的内容我们另外定义

XHR.send(null);

}

function byhongfei(){

if(XHR.readyState == 4){//关于Ajax引擎对象中的方法和属性,可以参考我的另一篇博文:http://www.cnblogs.com/hongfei/archive/2011/11/29/2265377.html

if(XHR.status == 200){

var textHTML=XHR.responseText;

document.getElementById('checkbox').innerHTML=textHTML;

}

}

}

代码解释:

①首先我们需要声明一个ajax引擎的对象:XHR(随便命名一个)

②因为微软的低版本IE和其他的浏览器创建ajax对象的方式不一样,现在IE和其他浏览器的市场份额几乎各占一半,所以我们得两方面都考虑到,IE–>ActiveXObject;其他–>XMLHttpRequest。我将她封装在一个函数中:createXHR

③我们在index.html中指定的当失去“焦点”时就会触发checkname()函数。那么我们如何将用户输入的“用户名”捕获呢?这里,利用js即可轻松捕获到document.myform.user.value(现在知道为何给form和input命名了吧,这一步对应流程图的“获得填写内容”),有兴趣的博友,可以试试在createXHR()的前一行敲行代码(alert(username)),将捕获到的用户名弹出试试看。

④Ajax引擎有几个方法和属性(可以参考我的另一篇博文:看图理解:普通交互方式和Ajax交互方式区别),使用之前我们得先调用函数craateXHR创建一个ajax对象

⑤有了ajax对象,有三个方法是必不可少的:open()、onreadystatechange、send()。

将请求发送到服务器,要使用open ()和send()方法

open()方法的第一个参数,指示采用GET或者POST方式进行传输。。。。。。

open()方法的第二个参数,指示要请求的URL地址(这里我们请求的是checkname.php文件),可以是绝对或相对地址

open()方法的第三个参数async指示是否采用异步请求,true为采用,这种情况下,通过ajax、js无需等待服务器响应,而是:①在等待服务器响应的同时执行其他脚本②当响应就绪后对响应进行处理。一般对一些小型的请求,async=false也是可以的,但此时就不要编写onreadystatechange 函数了

onreadystatechange事件:当ajax的属性readyState改变时,就触发此事件。在此事件中,当服务器响应已做好被处理的准备时(即readyState=4且status=200时),我们规定要让服务器做什么任务,这里我们规定将从数据库检索到的结果输出到id为”checkbox“的span标签中。

⑥通过checkname.php,查询数据库后,将得到查询结果(即服务器的响应,对应流程图中的”查询数据库“),此时数据还在ajax引擎中,如需获得该来自服务器的响应,我们需要使用XMLHttpRequest对象的responText或responseXML属性,并通过DOM属性innerHTML将从服务器响应回来的数据设置为id=”checkbox“的span标签的值

注:利用ajax监测邮箱是否存在一个道理,我们还可以利用ajax实时监测用户输入的密码强度,此时,需要用到可以把onblur事件改为onfocus事件。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个简单的注册页面的代码示例: ```html <!DOCTYPE html> <html> <head> <title>注册页面</title> <meta charset="UTF-8"> <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.min.js"></script> </head> <body> <h1>注册页面</h1> <form id="register-form" action="#" method="post"> <label for="username">用户名:</label> <input type="text" id="username" name="username" required><br> <label for="password">密码:</label> <input type="password" id="password" name="password" required><br> <label for="confirm-password">确认密码:</label> <input type="password" id="confirm-password" name="confirm-password" required><br> <label for="phone">手机号码:</label> <input type="text" id="phone" name="phone" required><br> <label for="phone-code">手机验证码:</label> <input type="text" id="phone-code" name="phone-code" required> <button type="button" id="get-code">获取验证码</button><br> <label for="email">邮箱:</label> <input type="email" id="email" name="email" required><br> <input type="submit" value="注册"> </form> <script> $(function(){ // 获取验证码按钮点击事件 $('#get-code').click(function(){ // TODO: 发送请求获取验证码 }); // 表单提交事件 $('#register-form').submit(function(){ // 获取表单数据 var username = $('#username').val(), password = $('#password').val(), confirmPassword = $('#confirm-password').val(), phone = $('#phone').val(), phoneCode = $('#phone-code').val(), email = $('#email').val(); // 判断两次输入密码是否一致 if (password !== confirmPassword) { alert('两次输入的密码不一致'); return false; } // TODO: 校验手机号码和手机验证码 // TODO: 校验邮箱 // 提交表单 $.ajax({ url: 'register.php', type: 'post', data: { username: username, password: password, phone: phone, email: email }, success: function(res){ alert(res.msg); if (res.code === 0) { window.location.href = 'login.html'; } }, error: function(){ alert('提交失败'); } }); return false; }); }); </script> </body> </html> ``` 需要注意以下几点: 1. 表单中的每个输入框都要有 `name` 属性,这样才能在提交表单时获取到输入的值。 2. 确认密码框和手机号码框需要加上 `required` 属性,表示必填项。 3. 获取验证码的功能需要发送请求到后端获取,这里只是给出一个点击事件的示例。 4. 表单提交时需要校验各个输入框的值是否符合要求,这里只给出了两次密码是否相同的示例。手机号码和邮箱的校验可以使用正则表达式进行,具体实现需要根据实际需求而定。 5. 表单提交时使用了 jQuery 的 `$.ajax` 方法发送异步请求,这里的 URL 和请求方式、请求参数都需要根据实际情况而定。后端接口需要根据表单中的数据进行相应的处理,并返回一个 JSON 格式的数据,其中 `code` 表示状态码,`msg` 表示提示信息。如果注册成功,可以跳转到登录页面。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值