当前位置:文档之家› ajax_day1

ajax_day1

ajax_day1
ajax_day1

Ajax Day1

1ajax引言

ajax asynchronous(异步) javascript and xml

同步请求:

1 地址栏超级链接表单javascript程序发送的请求都称之为同步请求

2 同步请求得到的是一张新的页面

3 同步请求必须等待响应,否则后续操作无意义

4 同步请求交互体验差

异步请求:

1 XMLHttpRequest对象xhr

2 异步请求不会响应新的页面,响应的是页面的局部(字符串)

3 异步请求无需等待响应

4 异步请求交互体验高

2XMLHttpRequest对象

XHR对象

1 异步请求

2 XMLHttpRequest 是一个javascript对象

3 XMLHttpRequest对象存在浏览器差异

1 Webkit内核浏览器

var xhr = new XMLHttpRequest();

2 IE核

var xhr = new ActiveXObject("Microsoft.XMLHTTP");

4 异步请求的发送

//发起请求

xhr.open("method","url");

method: get|post

url:/ajax_day1/xxx 、/ajax_day1/login.action

//传递数据

xhr.send();

5 异步请求的响应

响应内容:通过Server端输出流返回响应字符串

//监听响应

xhr.onreadystatechange = function(){

if(xhr.readyState==4&&xhr.status==200){

xhr.repsonseText

}

}

xhr.readyState

0 xhr未创建时

1 xhr被创建

2 xhr发送请求

3 xhr响应到达

4 xhr响应完毕

xhr.satuts

200 正常

404

500

xhr.responseText 服务器端为客户端返回的响应字符串

3ajax标准开发步骤

ajax标准开发步骤

1 创建xhr对象

var xhr

if(window.XMLHttpRequest){

xhr = new XMLHttpRequest();

} else{

xhr = new ActiveXObject("Microsoft.XMLHTTP");

}

2 请求

get方式

xhr.open("get","url?name=suns&password=111");

xhr.send(null);

post方式

xhr.open("post","url");

xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");

本质模拟使用表单最终才可以用post方式提交数据

xhr.send("name=suns&password=111");

3 响应

xhr.onreadystatechange=function(){

if(xhr.readyState==4&&xhr.status==200){

xhr.responseText

}

}

4ajax与struts2集成

?ajax与struts2集成注意事ù

1 client代码无需改变

2 server中的Action

1 收集数据通过成员变量

2 execute 中获得输出流

HttpServletResponse response = ServletActionContext.getResponse();

PrintWriter out = response.getWriter();

..

3 execute方法的返回值设置null 并且对应struts.xml配置文件中Action标签

内部的result标签省略

5jquery对于ajax的支持

?jquery对ajax的封装

1 屏蔽浏览器差异

2 减少ajax开发的冗余代码

3 jquery封装内容

1 xhr获得

xhr = new XMLHttpRequest();

xhr = new ActiveXObject("Microsoft.XMLHttp");

2 xhr发送请求

xhr.open();

xhr.setRequestHeader("Content-Type","application/x-www-form-urlecndoed

);

xhr.send();

3 xhr监听响应

xhr.onreadystatechange = function(){

if(xhr.readyState==4&&xhr.status==200){

xhr.responseText

}

}

$.ajax({

url:"",

type:"get|post",

data:"name=xxx&password=xxx" 注意get方式提交数据url? 不用写data post提交数据

dataType:"text"

success:function(data){ 注意:data = xhr.responseText function就是处理响应不需进行判断

}

});

相关主题
文本预览
相关文档 最新文档