Ajax:一种不用刷新整个页面便可与服务器通讯的办法。
发送请求:onreadystatechange
1) 该事件处理函数由服务器触发,而不是用户。
2) 在ajax执行过程中,服务器会通知客户端当前的通信状态。这依靠更新XMLHttpRequest对象的readyState来实现。改变readyState属性是服务器对客户端连接操作的一种方式。每次readyState属性的改变都会触发readystatechange事件。
接收响应:
1、readyState
1)readyState属性表示ajax请求的当前状态,有5个值,分别表示:
0代表未初始化,还没有调用open方法。
1代表正在加载,open方法已被调用,但send方法还没有被调用。
2代表已加载完毕,send已被调用,请求已经开始。
3代表交互中,服务器正在发送响应。
4代表完成,响应发送完毕。
2)每次readyState值的改变,都会触发onreadystatechange事件。如果把onreadystatechange事件处理函数赋给一个函数,那么每次readyState值的改变都会引发该函数的执行。
3)readyState值的变化会因浏览器的不同而有所差异。但是,当请求结束的时候,每个浏览器都会把readyState的值统一设为4。
2、Status
1)常用状态码及其含义:
404没找到页面
403禁止访问
500内部服务器出错
200一切正常
304没有被修改
2)在XMLHttpRequest对象中,服务器发送的状态码都保存在status属性里。通过把这个值和200或304比较,可以确保服务器是否已发送了一个成功的响应。
【例1】使用 XMLHttpRequest 实现 Ajax:写一个链接HelloAjax,运用ajax实现不刷新页面,打印出链接内txt文档里的Hello Ajax!!!
咱们先不用ajax看看效果,代码如下:
index.jsp:
helloAjax.txt里就写了一句话:Hello Ajax!!!
当我们运行系统后,点击链接就跳转到了helloAjax.txt页面,显示了Hello Ajax!!!,如图:
现在采用ajax的GET提交方式来实现,代码如下:
运行效果如下图:
下面采用POST方式提交,注意POST方式提交时要设置setRequestHeader的Content-Type的值为application/x-www-form-urlencoded。
实现代码如下:
我们在POST提交时传入值name=123,运行效果如下图: