完成验证用户名案例,要求用户名唯一,就是不能有重复。
页面中有一个文本框,当失去焦点的时候,验证输出的内容是否已经存在。
# 1、创建所需文件
创建03chkusername.html:
![](https://img.kancloud.cn/4e/a8/4ea88767f64b7f3dc7403a78f50a9a8d_673x39.png)
创建03chkusername.php
![](https://img.kancloud.cn/e9/e6/e9e6f1c01ca04fb92e33e70c33cc4b3a_721x163.png)
# 2、当input失去焦点,准备发送
![](https://img.kancloud.cn/9c/88/9c881230fce625bbe5df8e4e9aa51feb_944x437.png)
因为用get方式请求,所以参数直接写到url上即可。服务器端获取地址栏的参数,同样使用$_GET来获取。
# 3、发送请求
调用Ajax对象的send方法发送请求到服务器。
![](https://img.kancloud.cn/13/ce/13ce7f6c8ac6b39f15c27660e4dadc41_946x419.png)
# 4、服务器接收数据并判断
![](https://img.kancloud.cn/db/81/db81f5bd9aa2ee9ef9ec87ff3de03bde_699x412.png)
判断完成,将判断的结果返回给浏览器。echo出来的东西就是返回给浏览器的内容。
测试:
![](https://img.kancloud.cn/d8/92/d8929419ccc5c000d9de75fa24e71d7b_1257x605.png)
# 5、接收服务器返回的数据,并处理
![](https://img.kancloud.cn/45/57/4557fc3c953413c9289840d70754e51f_1068x486.png)
经过测试,发现并没有成功接收到服务器返回的数据。通过console.log(result);查看到的结果什么都么有。
# 6、监听Ajax执行状态
发送请求完毕,不应该马上就接收服务器返回的数据,应该判断一下Ajax进行到哪一步了。如果说进行到最后一步了,即服务器返回数据完毕,这个时候才应该获取服务器返回的数据。
Ajax对象中用onreadystatechange属性(事件),来监听(检测)Ajax执行到哪一步了。
Ajax对象中用readyState属性来表示Ajax的状态,具体是readyState属性值如下:
![](https://img.kancloud.cn/44/9e/449eb29c4155820cc76ca1760479aae5_788x151.png)
![](https://img.kancloud.cn/76/73/7673156c7f4065503f4c1a11adf228ec_1142x557.png)
# 7、使用Ajax步骤总结
![](https://img.kancloud.cn/45/e2/45e25d914dfab68515deb6ac67eeb40d_1138x490.png)
- 第一天
- 一、学习目标
- 二、关于JavaScript
- 三、JS语法基础
- 四、变量
- 五、常量
- 六、运算符
- 七、数组
- 八、对象
- 九、数据类型
- 第二天
- 一、昨日复习
- 二、今日目标
- 三、数据类型转换
- 四、流程控制
- 五、函数基础
- 六、作用域
- 七、标准库(内置对象)
- 八、总结
- 第三天
- 一、昨日复习
- 二、今日目标
- 三、DOM介绍
- 四、元素(标签)节点查询操作
- 五、元素(标签)节点增删改操作
- 六、设置/获取元素的css样式
- 七、事件和事件对象
- 八、键盘keyCode对照表
- 第四天
- 一、昨日复习
- 二、今日目标
- 三、DOM之属性节点操作
- 四、DOM对象的通用属性
- 五、DOM获取元素的位置
- 六、事件绑定与移除
- 七、事件对象相关属性和方法使用
- 八、案例--可编辑的表格
- 第五天
- 一、今日目标
- 二、执行流程
- 三、定时器
- 四、闭包
- 五、案例
- 第六天
- 一、昨日回顾
- 二、今日目标
- 三、正则表达式概述
- 四、入门案例
- 五、正则语法
- 六、分组/捕获和反向引用
- 七、匹配中文(utf-8编码)
- 八、环视(断言/零宽断言/正向预测/负向预测)
- 九、正则对象的属性和方法
- 十、支持正则表达式的 String 对象的方法
- 十一、案例
- 十二、PHP中的正则表达式
- 第七天
- 一、昨日回顾
- 二、正则案例
- 三、PHP中的正则表达式
- 四、正则练习
- 五、仿淘宝评分小星星
- 六、标签页效果
- 七、横向下拉菜单
- 第八天
- 一、今日目标
- 二、面向对象编程
- 三、定义对象
- 四、对象相关操作
- 五、对象在内存中的存在形式
- 六、原型对象(关键)
- 七、定义对象进阶
- 八、函数进阶
- 第九天
- 一、昨日回顾
- 二、今日目标
- 三、Object
- 四、继承
- 五、this指向总结
- 六、案例(贪吃蛇)
- 第十天
- 一、今日目标
- 二、Ajax概述
- 三、工作原理
- 四、XMLHttpRequest对象介绍
- 五、使用Ajax的步骤
- 六、细节问题
- 七、JSON
- 八、Ajax中,服务器返回json格式的数据
- 九、案例--省市县三级联动
- 第十一天
- 一、昨日回顾
- 二、今日目标
- 三、完成省市县三级联动
- 四、优化省市县三级联动
- 五、服务器返回XML格式的数据
- 六、FormData对象
- 七、跨域请求
- 八、实现跨域请求
- 第十二天
- 一、Ajax回顾
- 二、今日目标
- 三、jQuery概述
- 四、快速入门
- 五、可编辑的表格
- 六、纵向导航菜单
- 七、横向导航菜单
- 八、标签页效果
- 第十三天
- 一、学习目标
- 二、杂项
- 三、jQuery中的事件
- 四、jQuery封装的Ajax
- 五、案例 -- 无刷新的分页
- 第十四天
- 一、昨日回顾
- 二、效果
- 三、跨域请求
- 四、文档操作
- 五、插件编写
- 六、自定义插件
- 七、第三方插件