在js中使用ajax请求一般包括三个步骤:
1、创建XMLHttp对象
2、发送请求:包含打开链接、发送请求
3、处理响应
在不使用不论什么的js框架的情况下。要想使用ajax。可能须要向以下一样进行代码的编写
var xmlHttp = xmlHttpCreate();//创建对象
xmlHttp.onreadystatechange = function(){//响应处理
if(xmlHttp.readyState == 4){
console.info("response finish");
if(xmlHttp.status == 200){
console.info("reponse success");
console.info(xmlHttp.responseText);
}
}
}
xmlHttp.open("get","TestServlet",true);//打开链接
xmlHttp.send(null);//发送请求
function xmlHttpCreate() {
var xmlHttp;
try {
xmlHttp = new XMLHttpRequest;// ff opera
} catch (e) {
try {
xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");// ie
} catch (e) {
try {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {
}
}
}
return xmlHttp;
}
console.info(xmlHttpCreate());
假设在比較复杂的业务逻辑里面使用这样的ajax请求,会使得代码非常臃肿,不方便重用,而且能够看到,可能在server响应成功后要处理一个业务逻辑操作。这个时候不得不把操作写在onreadystatechage方法里面。
为了方便代码的重用我们能够做出例如以下处理; 1、server响应成功后,要处理的业务逻辑交给开发者自己处理 2、对请求进行面向对象的封装 处理之后看起来应该像以下这个样子:window.onload = function() { document.getElementById("hit").onclick = function() { console.info("開始请求"); ajax.post({ data : 'a=n', url : 'TestServlet', success : function(reponseText) { console.info("success : "+reponseText); }, error : function(reponseText) { console.info("error : "+reponseText); } }); } } var ajax = { xmlHttp : '', url:'', data:'', xmlHttpCreate : function() { var xmlHttp; try { xmlHttp = new XMLHttpRequest;// ff opera } catch (e) { try { xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");// ie } catch (e) { try { xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) { } } } return xmlHttp; }, post:function(jsonObj){ ajax.data = jsonObj.data; ajax.url = jsonObj.url; //创建XMLHttp对象,打开链接、请求、响应 ajax.xmlHttp = ajax.xmlHttpCreate(); ajax.xmlHttp.open("post",ajax.url,true); ajax.xmlHttp.onreadystatechange = function(){ if(ajax.xmlHttp.readyState == 4){ if(ajax.xmlHttp.status == 200){ jsonObj.success(ajax.xmlHttp.responseText); }else{ jsonObj.error(ajax.xmlHttp.responseText); } } } ajax.xmlHttp.send(ajax.data); } }; 上述代码实现了相似jquery中的ajax操作,读者有不懂的地方能够慢慢思考或者在此留言