日期:2014-05-16 浏览次数:20769 次
function createXmlHttpRequest(){
var oXmlHttp;
if(window.XMLHttpRequest){
//非IE浏览器
oXmlHttp = new XMLHttpRequest();
if(oXmlHttp.overrideMimeType){
//针对于FireFox浏览器,传参数出现的问题,设置MimeType
oXmlHttp.overrideMimeType('text/xml');
}
return oXmlHttp;
}
else if(window.ActiveXObject){
var aVersions = ["MSXML2.XMLHttp.5.0","MSXML2.XMLHttp.4.0",
"MSXML2.XMLHttp.3.0","MSXML2.XMLHttp","Microsoft.XMLHttp"];
for(var i in aVersions){
try{
oXmlHttp = new ActiveXObject(aVersions[i]);
return oXmlHttp;
}
catch(oError){
}
}
}
return null;
}
/*
* Function:向服务器发出异步请求
* @param:url 服务器地址(包括用post方法提交的参数)
* @param:param 向服务器提交的内容
* 当header值为null时,设置了application/x-www-form-urlencoded后,
* 可以通过Form进行Post提交,在后台用getParameter方法接收参数
* 当header值不为null时,采用字符流传递参数,使用getReader方法获得参数,
* 此方式扩展后可以用来文件上传,使用getInputStream方法获得文件流
*/
function SendHttpAync(url, param, callbackfunc, header){
if (navigator.onLine == false){
return "Off Line!"
}
var xmlhttp = createXmlHttpRequest();
if(callbackfunc != null ){
//异步调用,open方法的第三个参数为true
xmlhttp.open("post", url, true);
if(callbackfunc instanceof AjaxCallBackModule){
xmlhttp.onreadystatechange = function(){
callbackfunc.firstEvent(xmlhttp);
};
}
else{
xmlhttp.onreadystatechange = function(){
callbackfunc(xmlhttp);
};
}
}
if(header == null){
// 设置了application/x-www-form-urlencoded后,可以通过form进行post提交,
// 在后台使用getParameter方法获得参数,否则需要使用getReader方法获得参数
// 可以扩展后进行文件上传,使用getInputStream方法获得文件流
xmlhttp.setRequestHeader("Content-Type",
"application/x-www-form-urlencoded");
}
try{
//向服务器发送数据
xmlhttp.send(param);
}
catch (exception){
alert(xmlhttp.parseError.reason);
}
}
/*
* Function:异步调用返回函数
* @param:sfunc 返回成功函数
* @param:ffunc 返回失败函数
*/
function AjaxCallBackModule(sfunc,ffunc){
if(sfunc != null){
//存在成功函数
this.onSuccess = sfunc;
}
else{
//不存在成功函数,自定义一个成功函数(仅打印一个字符串,以示展示)
this.onSuccess = function(xmlhttp){
alert("Request Successful. Result:[" + xmlhttp.responseText + "]");
};
}
if(ffunc != null){
//存在失败函数
this.onFail = ffunc;
}
else{
//不存在失败函数,自定义一个失败函数(仅打印一个字符串,以示展示)
this.onFail = function(xmlhttp){
alert("Request Failed.");
};
}
this.firstEvent = function(xmlhttp){
if(xmlhttp.readyState == 4){
if(xmlhttp.status == 200){
alert("default success function");
setTimeout(this.onSuccess,5000)
//this.onSuccess(xmlhttp);
}
else{
alert("default failed function");
this.onFail(xmlhttp);
}
}
};
}
function SendAyncByCallBackModule(){
var param = "{\"hreflist\":[{\"maxpage\":7,\"pageid\":1}]}";
var myData = JSON.parse(param);
//另一种解析JSON的方法
//var myData = eval("("+param+")");
var url = "http://" + location.host + "/ajaxapp/initAction.do?pageid=1";
//创建CallBack函数
var module = new AjaxCallBackModule(moduleSuccess,moduleFailed);
//异步调用,用模板方法返回
SendHttpAync(url, JSON.stringify(myData), module, "");
}
function SendAyncByCallBackCustomed(){
var param = "{\"hreflist\":[{\"maxpage\":7,\"pageid\":1}]}";
var myData = JSON.parse(param);
//另一种解析JSON的方法
//var myData = eval("("+param+")");
var url = "http://" + location.host + "/ajaxapp/initAction.do?pageid=1";
//异步调用,用自定义方法返回
SendHttpAync(url, JSON.stringify(myData), myfunc, "");
}
// 自定义CallBack函数
var myfunc = function(xmlhttp){
if(xmlhttp.readyState == 4){
if(xmlhttp.status == 200){
alert("自定义成功方法");
}
else{
alert("自定义失败方法");
}
}
}
function moduleSuccess(){
alert("模板成功方法");
}
function moduleFailed(){
alert("模板失败方法");
}
?