写在前面
一晃已经三月份了,从去年10月底开始学习到html到现在红宝书翻完,感觉自己什么都懂一点,却又说不出哪里懂。。。。索性辞职好好学段时间。趁着今天辞职说一说ajax
ajax从入门到放弃
AJAX的作用
AJAX即(asynchronous Javascript And XML) 简而言之就是实现页面和web服务器之间的数据异步传输。
举个例子:当我们正常浏览网页的时候,在页面发出请求,就要等待服务器回应响应,然后再下载整个的页面。这个过程是同步的,在等待过程中用户不能做任何事,而且我们有时候只是需要部分的信息,而不是全部的页面信息。这时候AJAX就运应而生。有了AJAX之后,浏览器在发出请求后,用户还能继续做其他事,而且WEB服务器和浏览器之间之传输我们需要的数据,时间和用户体验程度会大大改善。
ajax分为哪几步
我感觉其实ajax并不难,概念也很好懂。主要就是分为这四步
- 生成一个ajax请求.(创建引擎)针对不同的浏览器有不同的方法,这里暂时只针对于现代浏览器;
1
| var xml=new XMLHttpRequest();
|
1 2 3 4 5
| 三个参数的含义如下:
* method:请求类型,类似 “GET”或”POST”的字符串 * url:请求路径字符串,指向所请求的服务器上的那个文件(servlet,jsp,action) * asynch:表示请求是否要异步传输,默认值为true(异步)
|
- 发送数据send(data)
1 2
| xml.send(data); 这里根据请求类型的不同有所区别
|
封装一个ajax函数(跨浏览器那种的)
感觉上面的说的有点力不从心。写一个跨浏览器都能使用的ajax函数,来尝试说明
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
| var xmlhttp = false;
function ajax(opts) { xmlhttp = false; if (window.XMLHttpRequest) { xmlhttp = new XMLHttpRequest(); if (xmlhttp.overrideMimeType) { xmlhttp.overrideMimeType('text/xml'); } } else if (window.ActiveXObject) { try { xmlhttp = new ActiveXObject("Msxm12.XMLHTTP"); } catch (e) { try { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {} } } if (!xmlhttp) { alert('Giving up :( Cannot create an XMLHTTP instance'); return false; } xmlhttp.onreadystatechange=function (){ if(xmlhttp.readyState===4 && xmlhttp.status===200){ var json=JSON.parse(xml.responseText); opts.success(json); }else if(xmlhttp.readyState===4 && xmlhttp.status===404){ opts.error(); } } var str=""; for (var key in opts.date){ str+=(key+"="+opts.date[key]+"&"); } str=str.replace(/&$/,""); if(opts.type.toLowerCase()==="get"){ xmlhttp.open(opts.type,opts.url+"?"+str,true); xmlhttp.send(); } if(opts.type.toLowerCase()==="post"){ xmlhttp.open(opts.type,opts.url,true); xml.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.send(str); } } ajax({ url:"ajax.php", type:"post", date:{ name:"李瑞", age:"22" }, success:function(data){ onSuccess(data); }, error:function(){ onSuccess(); } })
|
第二个就是状态码
ajax的几个状态码
1 2 3 4 5 6 7
| readyState 属性表示Ajax请求的当前状态。它的值用数字代表。分别是:
0 代表未初始化。 还没有调用 open 方法 1 代表正在加载。 open 方法已被调用,但 send 方法还没有被调用 2 代表已加载完毕。send 已被调用。请求已经开始 3 代表交互中。服务器正在发送响应 4 代表完成。响应发送完毕
|
1 2 3 4 5 6 7
| status 属性表示状态码,也是用数字表示,分别是:
404 没找到页面 403 禁止访问 500 内部服务器出错 200 一切正常 304 没有被修改
|
最后一个例子.利用ajax 写的一个很简单的注册验证界面
服务器挂了 上床不上去,先看本地的示例图把
示例图简单的注册界面
点我查看github Demo