当前位置: 首页 > 图文教程 > 网络编程 > AJAX技术 > 一个方便AJAX开发的通用类

AJAX技术
AJAX 用户注册时的应用实例
ajax readyState的五种状态详解
php AJAX POST的使用实例代码
Ajax 用户名验证是否存在
Ajax+PHP简单基础入门实例教程
AJAX 异步传输数据的问题
ASP AJAX 静态分页
js装载xml文件然后发向服务器的实现代码
完成了AJAX树附原理分析
AJAX 支持搜索引擎问题分析
ajax Suggest类似google的搜索提示效果
Ajax 框架学习笔记
用ajax xml的数据读取的HelloWorld程序
Ajax 表单验证 实现代码
Ajax request response 乱码解决方法
AJAX 随记
ajax 乱码的一种解决方法
ajax session过期问题的几个解决方案
四步学会 Ajax
Ajax异步(请求)提交类 支持跨域

AJAX技术 中的 一个方便AJAX开发的通用类


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-13   浏览: 49 ::
收藏到网摘: n/a

Name: AJAXRequest
Author: HotHeart(xujiwei)
Site: http://www.xujiwei.cn/
Blog: http://www.xujiwei.cn/blog/
Copyright (c) 2006, All Rights Reserved
类名:AJAXRequest
版本:0.3
日期:2006-12-18
介绍:AJAXRequest是一个方便AJAX开发的通用类,可以方便地进行一些AJAX中需要的操作,从而简化开发步骤,减少重复代码编写量。
创建方法:
var ajaxobj=new AJAXRequest([url],[callback],[content],[method],[async]);
如果创建失败则返回false
属性:
url - 请求URL,字符串,默认为空
callback - 回调函数,即返回响应内容时调用的函数,默认为直接返回,回调函数有一个参数为XMLHttpRequest对象,即定义回调函数时要这样:function mycallback(xmlobj)
content - 请求的内容,如果请求方法为POST需要设定此属性,默认为空字符串
method - 请求方法,字符串,POST或者GET,默认为POST
async - 是否异步,true为异步,false为同步,默认为true
方法
function send([url],[callback],[content],[method],[async])
发送请求,可选参数列表为空就使用对象属性
function get([url],[callback])
使用GET方法请求一个URL,可选参数默认使用对象属性
function post(form_obj,[callback],[url],[method])
发送一个表单到指定URL,form_obj为指定表单对象,可选参数为空时使用对象属性
示例:
1. get方法
function test1() {
var ajax=new AJAXRequest;
ajax.get(
"test.asp",
function(obj) {
document.getElementById("test1").value=obj.responseText;
}
);
}
2. post方法
function test2() {
var ajax=new AJAXRequest;
ajax.post(
document.getElementById("test2c"),
function(obj) {
document.getElementById("test2r").innerHTML=obj.responseText;
}
);
}
复制代码 代码如下:

/*------------------------------------------
Author: xujiwei
Website: http://www.xujiwei.cn
E-mail: [email protected]
Copyright (c) 2006, All Rights Reserved
------------------------------------------*/
function AJAXRequest() {
var xmlObj = false;
var CBfunc,ObjSelf;
ObjSelf=this;
try { xmlObj=new XMLHttpRequest; }
catch(e) {
try { xmlObj=new ActiveXObject("MSXML2.XMLHTTP"); }
catch(e2) {
try { xmlObj=new ActiveXObject("Microsoft.XMLHTTP"); }
catch(e3) { xmlObj=false; }
}
}
if (!xmlObj) return false;
if(arguments[0]) this.url=arguments[0]; else this.url="";
if(arguments[1]) this.callback=arguments[1]; else this.callback=function(obj){return};
if(arguments[2]) this.content=arguments[2]; else this.content="";
if(arguments[3]) this.method=arguments[3]; else this.method="POST";
if(arguments[4]) this.async=arguments[4]; else this.async=true;
this.send=function() {
var purl,pcbf,pc,pm,pa;
if(arguments[0]) purl=arguments[0]; else purl=this.url;
if(arguments[1]) pc=arguments[1]; else pc=this.content;
if(arguments[2]) pcbf=arguments[2]; else pcbf=this.callback;
if(arguments[3]) pm=arguments[3]; else pm=this.method;
if(arguments[4]) pa=arguments[4]; else pa=this.async;
if(!pm||!purl||!pa) return false;
xmlObj.open (pm, purl, pa);
if(pm=="POST") xmlObj.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
xmlObj.onreadystatechange=function() {
if(xmlObj.readyState==4) {
if(xmlObj.status==200) {
pcbf(xmlObj);
}
else {
pcbf(null);
}
}
}
if(pm=="POST")
xmlObj.send(pc);
else
xmlObj.send("");
}
this.get=function() {
var purl,pcbf;
if(arguments[0]) purl=arguments[0]; else purl=this.url;
if(arguments[1]) pcbf=arguments[1]; else pcbf=this.callback;
if(!purl&&!pcbf) return false;
this.send(purl,"",pcbf,"GET",true);
}
this.post=function() {
var fo,pcbf,purl,pc,pm;
if(arguments[0]) fo=arguments[0]; else return false;
if(arguments[1]) pcbf=arguments[1]; else pcbf=this.callback;
if(arguments[2])
purl=arguments[2];
else if(fo.action)
purl=fo.action;
else
purl=this.url;
if(arguments[3])
pm=arguments[3];
else if(fo.method)
pm=fo.method.toLowerCase();
else
pm="post";
if(!pcbf&&!purl) return false;
pc=this.formToStr(fo);
if(!pc) return false;
if(pm) {
if(pm=="post")
this.send(purl,pc,pcbf,"POST",true);
else
if(purl.indexOf("?")>0)
this.send(purl+"&"+pc,"",pcbf,"GET",true);
else
this.send(purl+"?"+pc,"",pcbf,"GET",true);
}
else
this.send(purl,pc,pcbf,"POST",true);
}
// formToStr
// from SurfChen <[email protected]>
// @url http://www.surfchen.org/
// @license http://www.gnu.org/licenses/gpl.html GPL
// modified by xujiwei
// @url http://www.xujiwei.cn/
this.formToStr=function(fc) {
var i,query_string="",and="";
for(i=0;i<fc.length;i++) {
e=fc[i];
if (e.name!='') {
if (e.type=='select-one') {
element_value=e.options[e.selectedIndex].value;
}
else if (e.type=='checkbox' || e.type=='radio') {
if (e.checked==false) {
continue;
}
element_value=e.value;
}
else {
element_value=e.value;
}
element_value=encodeURIComponent(element_value);
query_string+=and+e.name+'='+element_value;
and="&";
}
}
return query_string;
}
}
'