JS实现AJAX框架
2012-01-12 16:43 少毅 阅读(464) 评论(0) 收藏 举报AJAX指异步JavaScript及XML(Asynchronous JavaScript And XML),通过AJAX实现异步提交请求,可以实现在不刷新整个页面的情况下局部更新页面;
Ajax的核心是JavaScript对象XmlHttpRequest(旧版IE可使用ActiveXObject代替),通过它使您可以使用JavaScript向服务器提出请求并处理响应,而不阻塞用户;
function InitAjax(){
var ajax = false;
//开始初始化XMLHttpRequest对象
if(window.XMLHttpRequest){ //Mozilla 浏览器
ajax = new XMLHttpRequest();
if (ajax.overrideMimeType) {//设置MiME类别
ajax.overrideMimeType("text/xml");
}
}else if(window.ActiveXObject){ // IE浏览器
try{
ajax = new ActiveXObject("Msxml2.XMLHTTP");
}catch(e){
try{
ajax = new ActiveXObject("Microsoft.XMLHTTP");
}catch(e){}
}
}
if(!ajax){ // 异常,创建对象实例失败
window.alert("不能创建XMLHttpRequest对象实例.");
return false;
}
return ajax;
}
function ajax(url,action,data,callback,type,async) {
// action: 提交方式 get,post
// url: 请求地址
// data: 提交数据
// callback: 回调函数 function(data)
// type: 返回数据类型 text,xml,json
// async: 是否异步传输 true,false
if(!url) { return false; }
if(!action) { action = 'get'; }
if(!callback) { callback = ajaxCallback; }
if(!type) { type = 'text'; }
if(!async) { async = true; }
action = action.toLowerCase();
type = type.toLowerCase();
var ajaxmessageid = document.getElementById("ajaxmessageid");
if(ajaxmessageid) {
ajaxmessageid.style.display = '';
}
var xmlhttp = InitAjax();
xmlhttp.open(action,url,async);
xmlhttp.setRequestHeader("x-requested-with","XMLHttpRequest");
xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
xmlhttp.onreadystatechange = function(){
if(xmlhttp.readyState==4 && xmlhttp.status==200) {
var returndata = '';
if(type=='json') {
returndata = eval("(" + xmlhttp.responseText + ")");
} else if (type=='xml') {
returndata = xmlhttp.responseXML;
} else {
returndata = xmlhttp.responseText;
}
callback(returndata);
if(ajaxmessageid) {
ajaxmessageid.style.display = 'none';
}
}
};
xmlhttp.send(data);
}
html页面中调用代码如下:
<script language="JavaScript">
ajax("异步提交的url","POST","提交数据",function(data){
//根据返回的data实现逻辑
});
</script>