日期:2014-05-16 浏览次数:20713 次
?现在JavaWeb领域,MVC框架越来越多,比较出名的有Struts、Struts2、SpringMVC、WebWork等。而Ajax,作为一种与特定的动态Web编程语言(如Java、C#、PHP)无关的技术,也已经被引入到了Java MVC框架的各家各户。而这些MVC框架,归根到底,都是对Servlet技术的封装。同时,支持Ajax的JavaScript框架(or类库)也越来越多,出名的如Jquery、Ext、Prototype、DWR等,而它们实现异步传输功能还是离不开JavaScript中的XMLHttpRequest这个对象。好,转入正题吧。
Ajax通过XMLHttpRequest对象实现异步传输,那我们首先要获取这个对象。由于浏览器的差异,为了兼容各种常用的浏览器,先写一个初始化XMLHttpRequest对象的方法,代码如下:
?
?
?
?? ? 对上面的代码,在这里解析一下:XMLHttpRequest对象的请求状态(readyState)有0、1、2、3、4,其中,0表示未初始化,1表示open方法成功调用,2表示服务器应答客户端请求,3表示交互中,HTTP头信息已经收到,但响应数据还没有接收,/**
* Get方式向服务器端异步发送数据
* @param url 服务器端的路径,数据发送的目的地
* @param data 发送的数据,格式如: "key1=value1&key2=value2"
* @param callback 回调函数,
*/
function doGet(url, data, callback) {
var url = url;
if(url.indexOf("?") == -1) {
url = url + "?" + data;
} else {
url = url + "&" + data;
}
initXmlHttp();
xmlHttp.onreadystatechange = callback; //注册回调函数
xmlHttp.open("GET", url, true); //设置连接信息
xmlHttp.send(null);
}
/**
* Post方式向服务器端异步发送数据
* @param url 服务器端的路径,数据发送的目的地
* @param data 发送的数据,格式如: "key1=value1&key2=value2"
* @param callback 回调函数
* @return
*/
function doPost(url, data, callback) {
initXmlHttp(); //初始化
xmlHttp.onreadystatechange = callback; //注册回调函数
xmlHttp.open("POST", url, true);
xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xmlHttp.send(data);
}
/**
* 默认回调函数
* 只在测试时使用,在doGet和doPost函数中的第三个参数callback,可由用户自定义回调函数,
* 若不设定,则调用默认的回调函数
*/
function callback() {
//判断对象的状态是否交互完成
if(xmlHttp.readyState == 4) {
//判断http的交互是否成功
if(xmlHttp.status == 200) {
//获取服务器返回的纯文本数据
var responseText = xmlHttp.responseText;
//获取服务器返回的XML格式数据
//var responseXml = xmlHttp.responseXML;
//Alert从服务器端返回的信息
window.alert(responseText);
}
}
}