对于ajax,很多人只知道它是前后端数据对接的工具,但是ajax到底是什么,它的功能仅仅局限于此吗?
AJAX =Asynchronous JavaScript and XML,即异步 JavaScript 和 XML,简单地理解,AJAX 是一种用于创建快速动态网页的技术。通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。传统的网页(不使用 AJAX)如果需要更新内容,必需重载整个网页面。有很多使用 AJAX 的应用程序案例:新浪微博、Google 地图、开心网等等。
想必到这里,很多同学已经对ajax已经有了更加深入的了解。理论不多说,我们直接通过验证登录的实例来对ajax做个简单的入门。
我们先来看看这个案例的运行效果是怎样的。
下面正式开始代码:
HTML部分
1 <form >
2 用户名:<input type="text" name="username" id="username"/><br />
3 密码:<input type="password" name="password" id="password"/><span id="loginInfor"></span><br>
4 <input type="button" value="登录" id="btn"/>
5 </form>
JavaScript部分
1 window.onload = function(){
2 var btn = document.getElementById("btn");
3 var loginInfor = document.getElementById("loginInfor");
4 btn.onclick = function(){
5 var userName = document.getElementById("username").value;
6 var passWord = document.getElementById("password").value;
7 ajax(); // 这里,我们将ajax封装在一个函数里面
8 }
9 }
php部分
1 <?php
2 $username = $_GET['username'];
3 $password = $_GET['password'];
4 if($username == 'admin' && $password == 'admin'){
5 echo 1;
6 }else{
7 echo 0;
8 }
9
ajax部分
分为四步:
- 创建HttpReuqest对象:ajax通过HttpReuqest对象将浏览器和服务器之间的数据进行传递
- open方法初始化url:准备向服务器发送请求,但是还没有发送!
- 向服务器发送请求
- onreadystatechange回调函数:发送完请求后,需要做的事情
1 // 1.创建HttpReuqest对象 2 var xhr = null;
3 if(window.XMLHttpRequest){
4 xhr = new XMLHttpRequest();
5 }else {
6 xhr = new ActiveXObject("Microsoft.XMLHTTP"); // ie浏览器下兼容
7 }
8
9 // 2.open方法初始化url:准备向服务器发送请求,但是还没有发送!10 var url = './data.php?username='+encodeURIComponent(userName)+'&password='+passWord; // 将字符串作为url进行编码,防止出现中文乱码问题
11 xhr.open("GET",url); // 采用get方式请求
12
13 // 4.onreadystatechange回调函数:发送完请求后,需要做的事情14 xhr.onreadystatechange = function(){
15 if(xhr.readyState == 4){ // 表示收到了来自服务器返回的数据
16 if(xhr.status == 200){ // 表示成功接收
17 var data = xhr.responseText; // 获取接收到的数据,这里是后台返回的0或1
18 console.log(data);
19 if(data == 1){
20 loginInfor.innerHTML = "登录成功!用户名:"+userName+" 密码"+passWord;
21 }else if(data == 0){
22 loginInfor.innerHTML = "密码或用户名错误.请重新登录!用户名:"+userName+" 密码"+passWord;
23 }
24 }
25 };
26 }
27 // 3.向服务器发送请求28 xhr.send(null);
可能有的同学看到这里还有点疑惑,下面将进行详细的解释说明。
1.采用post方式还是get方式,有什么区别
get与post的最基本的区别是:
使用Get请求时,参数在URL中显示,而使用Post方式,则不会显示出来
使用Get请求发送数据量小,Post请求发送数据量大
使用时,将上述代码的第2步和第3步进行更改,对比如下:
get方式 | post方式 |
|
|
由此可以得出结论:
1.get请求需注意缓存问题,post请求不需担心这个问题
2.post请求必须设置Content-Type值为application/x-form-www-urlencoded
3.发送请求时,因为get请求的参数都在url里,所以send函数发送的参数为null,而post请求在使用send方法时,却需赋予其参数
2.XMLHttpRequest对象的三个属性及意义
onreadystatechange :存储函数(或函数名),每当readyState属性改变时,就会调用该函数
readyState:存有XMLHttpRequest的状态,从0到4发生变化。
0:请求未初始化
1:服务器连接已建立
2:请求已接收
3:请求处理中
4:请求已完成,且响应已就绪
status:200表示成功
好了, 到此一个简单的ajax入门程序就完成了!