8.1.Ajax 的原理及实现步骤

1.什么是AJAX?

AJAX全称为“Asynchronous JavaScript and XML”(异步JavaScript和XML),是一种创建交互式网页应用的网页开发技术。

 

2.AJAX的工作原理(Ajax 的无刷新功能就是利用 XMLHttpRequest 的异步请求来完成的)

Ajax的工作原理相当于在用户和服务器之间加了—个中间层(AJAX引擎),使用户操作与服务器响应异步化。并不是所有的用户请求都提交给服务器,像—些数据验证和数据处理等都交给Ajax引擎自己来做, 只有确定需要从服务器读取新数据时再由Ajax引擎代为向服务器提交请求。实现了客户端与服务器进行数据交流过程。好处是:不用页面刷新,并且在等待页面传输数据的同时可以进行其他操作。

首先,有客户端事件触发Ajax事件。

然后,创建一个 XMLHttpRequest 对象(由于浏览器不同需要相应判断处理),设置相应的请求信息(通过open来做,例如请求地址等 设置 );然后我们绑定 onreadystatechange 事件,在这个事件中我们根据服务器返回状态的不同来做出不同处理,这其中主要是请求成功后接收相应的返回值来通过 js 对客户端做出相应操作(我 们只是使显示有关信息);发送这个请 求(通过send方法)。 

最后,执行完毕后,把结果返回给客户端。

 

XMLHttpRequest对象

属性

readyState:请求状态,开始请求时值为0直到请求完成这个值增长到4

0:是uninitialized,未初始化。已经创建了XMLHttpRequest对象但是未初始化。

1:是loading,send for request but not called .已经开始准备好要发送了。

2:是loaded, send called,headers and status are available。已经发送,但是还没有收到响应。

3:是interactive,downloading response,but responseText only partial set.正在接受响应,但是还不完整。

4:是completed,finish downloading.接受响应完毕。

responseText:目前为止接收到的响应体,readyState<3此属性为空字符串,=3为当前响应体,=4则为完整响应体

responseXML:服务器端相应,解析为xml并作为Document对象返回

status:服务器端返回的状态码,=200成功,=404表示“Not Found”

statusText:用名称表示的服务器端返回状态,对于“OK”为200,“Not Found”为400

方法 

setRequestHeader():向一个打开但是未发生的请求设置头信息

open():初始化请求参数但是不发送

send():发送Http请求

abort():取消当前相应

getAllResponseHeaders():把http相应头作为未解析的字符串返回

getResponseHeader():返回http相应头的值

 

代码实现 

ajax.js文件代码,也是我们说的主要内容,是一个javascript文件,所有的Ajax操作都在这里:

//与服务器通信

function talktoServer(url) { var req = newXMLHTTPRequst(); var callbackHandler = getReadyStateHandler(req); req.onreadystatechange = callbackHandler; req.open("POST", url, true);

req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); var testmsg = document.getElementById("testmsg"); var msg_value = testmsg.value; req.send("msg="+msg_value);

}

//创建XMLHTTP对象

function newXMLHTTPRequst() { var xmlreq = false; if (window.XMLHttpRequest) { xmlreq = new XMLHttpRequest(); } else if (window.ActiveXobject) { try{ xmlreq=new ActiveXObject("Msxm12.XMLHTTP") } catch (e1) { try { xmlreq = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e2) { } } } return xmlreq;

}

//服务器回调函数

function getReadyStateHandler(req) { return function() { if (req.readyState == 4) { if (req.status == 200) { var msg_display = document.getElementById("msg_display"); msg_display.innerHTML = req.responseText; } else { var hellomsg = document.getElementById("hellomsg"); hellomsg.innerHTML = "ERROR" + req.status; } } }

}

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值