本人在网站看见好多ajax的类所以我就把收集起来,给大家多一些选择,希望给大家带来帮助
第一个ajax类
在给blog加上无刷新搜索和即时验证检测后,又看了下代码,感觉太过麻烦,就把XMLHttpRequest请求封装到一个类里面,用起来方便多了,不用记那么多代码,什么创建XMLHttpRequest对象什么的,这部分代码也是重用性比较高的~已经打包,在日志的末尾下载。
要看效果的话点开侧边栏里的日志搜索,里面有一个无刷新搜索,就是了,或者在阅读日志或留言簿里的注册码那里有即时检测,如果不输入验证码或者输错了验证码,输入框都会变红的'
类名:AJAXRequest
创建方法:var ajaxobj=new AJAXRequest;,如果创建失败则返回false
属性:method - 请求方法,字符串,POST或者GET,默认为POST
url - 请求URL,字符串,默认为空
async - 是否异步,true为异步,false为同步,默认为true
content - 请求的内容,如果请求方法为POST需要设定此属性,默认为空
callback - 回调函数,即返回响应内容时调用的函数,默认为直接返回,回调函数有一个参数为XMLHttpRequest对象,即定义回调函数时要这样:function mycallback(xmlobj)
方法:send - 发送请求,无参数
一个例子:
[复制此代码]CODE:
<script type="text/javascript" src="ajaxrequest.js"></script>
<script type="text/javascript">
var ajaxobj=new AJAXRequest; // 创建AJAX对象
ajaxobj.method="GET"; // 设置请求方式为GET
ajaxobj.url="default.asp" // URL为default.asp
// 设置回调函数,输出响应内容
ajaxobj.callback=function(xmlobj) {
document.write(xmlobj.responseText);
}
ajaxobj.send(); // 发送请求
[复制此代码]CODE:
// AJAX类
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;
this.method="POST";
this.url;
this.async=true;
this.content="";
this.callback=function(cbobj) {return;}
this.send=function() {
if(!this.method||!this.url||!this.async) return false;
xmlObj.open (this.method, this.url, this.async);
if(this.method=="POST") xmlObj.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
xmlObj.onreadystatechange=function() {
if(xmlObj.readyState==4) {
if(xmlObj.status==200) {
ObjSelf.callback(xmlObj);
}
}
}
if(this.method=="POST") xmlObj.send(this.content);
else xmlObj.send(null);
}
}
第二个ajax类
程序代码:
使用方法:
应用实例:
第三个ajax类
YunAjax.js:
/// <summary>
/// 调用ajax,返回服务器端的原始数据
/// </summary>
/// <param name="url">远程调用路径</param>
/// <param name="pars">附加到路径的url参数</param>
/// <param name="method">请求方式,get或post</param>
/// <param name="onComplete">此变量是一个函数,数据请求成功后要调用的函数</param>
/// <param name="asynchronous">是否异步调用,true和false</param>
function YunAjax(url,pars,method,onComplete,asynchronous)
{
var xmlHttp;
if(window.ActiveXObject)
{
try
{
xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
}
catch(e)
{
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
}
else if(window.XMLHttpRequest)
{
xmlHttp = new XMLHttpRequest();
}
xmlHttp.onreadystatechange = function()
{
if(xmlHttp.readyState == 4)
{
onComplete(xmlHttp);
}
}
//默认用get提交
if(method.toLowerCase() == "get")
{
url = url+"?"+pars;
xmlHttp.open("GET",url,asynchronous);
xmlHttp.send(null);
}
else
{
xmlHttp.open("POST",url,asynchronous);
xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
xmlHttp.send(pars);
}
}
第四个ajax类
//AJAX类function AjaxClass(){ var XmlHttp = false; try { XmlHttp = new XMLHttpRequest(); //FireFox专有 } catch(e) { try { XmlHttp = new ActiveXObject("MSXML2.XMLHTTP"); } catch(e2) { try { XmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); } catch(e3) { alert("你的浏览器不支持XMLHTTP对象,请升级到IE6以上版本!"); XmlHttp = false; } } } var me = this; this.Method = "POST"; this.Url = ""; this.Async = true; this.Arg = ""; this.CallBack = function(){}; this.Send = function() { if (this.Url=="") { return false; } if (!XmlHttp) { return IframePost(); } XmlHttp.open (this.Method, this.Url, this.Async); if (this.Method=="POST") { XmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); } XmlHttp.onreadystatechange = function() { if (XmlHttp.readyState==4) { var Result = false; if (XmlHttp.status==200) { var rec = new ActiveXObject("ADODB.RecordSet"); rec.Fields.Append("DDD",201,1); rec.open(); rec.addNew(); rec(0).appendChunk(XmlHttp.responseBody); rec.update(); Result = rec(0).value; rec.Close(); rec = null; } XmlHttp = null; me.CallBack(Result); } } if (this.Method=="POST") { XmlHttp.send(this.Arg); } else { XmlHttp.send(null); } } //Iframe方式提交 function IframePost() { var Num = 0; var obj = document.createElement("iframe"); obj.attachEvent("onload",function(){ me.CallBack(obj.contentWindow.document.body.innerHTML); obj.removeNode() }); obj.attachEvent("onreadystatechange",function(){ if (Num>=5) {alert(false);obj.removeNode()} }); obj.src = me.Url; obj.style.display = 'none'; document.body.appendChild(obj); }}/*----------, , , ------------------调用方法------------------------------var Ajax = new AjaxClass(); // 创建AJAX对象 Ajax.Method = "POST"; // 设置请求方式为POST Ajax.Url = "default.asp" // URL为default.asp Ajax.Async = true; // 是否异步 Ajax.Arg = "abc"; // POST的参数 Ajax.CallBack = function(str) // 回调函数 { document.write(str); } Ajax.Send(); // 发送请求--------------------------------------------------------------------*/
第五个ajax类
ajax.js
/**
* 取得当前页面的url
* 可以在调用ajax_query前修改
**/
var url = location.href.substr(0, location.href.length-location.search.length);
/**
* 给Function对象添加一个取得函数名的方法
**/
Function.prototype.Name = function() {
var s = Function.prototype.Name.caller.toString();
return s.split(/[\r\n]+/)[0].replace(/function\s+(\w+).+/g, '$1');
}
/**
* 函数 $
* 功能 获取dhtml对象
* 参数 e 待查找的对象id或name
* 返回 成功:对象 失败:null
*/
function $(e) {
var tag = document.getElementById(e);
if(tag) return tag;
tag = document.getElementsByName(e);
if(tag.tagName == undefined) return null;
return tag;
}
/**
* 建立并返回XMLHTTP对象
* 说明 虽然Msxml2.XMLHTTP有着比Microsoft.XMLHTTP更优秀的性能,但是在配置较低的
* 环境下并不能正常工作。当确认能够正常工作时,再删去注释
**/
function create_http() {
if (window.XMLHttpRequest) return(new XMLHttpRequest());
var arr_t = new Array(
"MSXML2.XMLHTTP.4.0",
"MSXML2.XMLHTTP.3.0",
"MSXML2.XMLHTTP.2.6",
// "MSXML2.XMLHTTP",
"Microsoft.XMLHTTP",
"MSXML.XMLHTTP"
);
for(var i=0; i<arr_t.length; i++) {
try {
xmlhttp_ver = arr_t[i];
return new ActiveXObject(arr_t[i]);
}catch(e) {}
}
return(null);
}
/**
* 函数 ajax_query
* 功能 向服务器发送指令,并处理返回数据
* 参数
* method 服务器端方法名
* tag 接受返回数据的dhml对象名,缺省时由服务器决定处理方式
* 其他 向服务器端传递的其他参数,可缺省
**/
function ajax_query(method, tag) {
/**
* 尝试创建XMLHTTP对象
**/
var xmlhttp;
xmlhttp = create_http();
if(! xmlhttp) {
alert('错误! 缺少连接组件');
return;
}
if(arguments.length == 0) {
alert(Function.Name()+'至少需要一个方法名');
return;
}
var data = 'ajax=' + method;
var i = 1;
if(tag && $(tag)) {
data = data + '&ajaxtag=' + tag;
i++;
}
/**
* 构造参数串
* 使用了encodeURIComponent函数对参数串进行编码
* 说明
* encodeURIComponent函数是将传入的参数转换成utf-8编码以后再做URL编码,可以在
* 服务器端自动完成URL解码。注意URL解码后的是utf-8编码的串,需要自行完成到
* 所需编码的转换
* escape函数是将传入的参数转换成unicode编码以后再做URL编码,在服务器端一般不
* 能全部完成URL解码。参数中的汉字将以%uhhhh的形式出现,处理上稍嫌麻烦
**/
for(; i < arguments.length; i++) {
data = data + '&ajaxargs[]=' + encodeURIComponent(arguments[i]);
}
/**
* 根据参数串的长度确定传输方式
**/
var url0 = ';
var method, post_data;
if(data.length >= 2048) {
method = 'POST';
url0 = url;
post_data = data;
}else {
method = "GET";
url0 = url + '?' + data;
post_data = ';
}
/**
* 建立到服务器的连接
**/
xmlhttp.open(method, url0, true);
/**
* 如果是POST传输方式则设置HTTP头信息
**/
if (method == "POST") {
xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
}
/**
* 设置异步模式回调函数
**/
xmlhttp.onreadystatechange = function() {
if (!(xmlhttp.readyState == 4 && xmlhttp.status == 200)) {
return;
}
var xml = xmlhttp.responseXML;
if(xml.xml == ') {
alert(xmlhttp.responseText);
return;
}
xml = xml.documentElement;
for(var i=0; i<xml.childNodes.length; i++) {
var tag = ';
var data = ';
/**
* 只处理XML文档中的action节点
**/
if(xml.childNodes[i].nodeName == 'action') {
/**
* 如果节点有属性,则取属性值
* 约定:无论节点有多少属性和是什么名字只认定第一个属性为需要的
* 这个属性值将作为赋值操作的DHTML对象名
**/
if(xml.childNodes[i].attributes.length > 0) {
tag = xml.childNodes[i].attributes[0].value;
}
if(xml.childNodes[i].childNodes.length > 1) {
/**
* Firefox需要这样取得CDATA的内容
**/
for(var j=0; j<xml.childNodes[i].childNodes.length; j++) {
if (xml.childNodes[i].childNodes[j].firstChild) {
data = xml.childNodes[i].childNodes[j].firstChild.data;
}
}
}else if(xml.childNodes[i].firstChild) {
/**
* 取得节点的内容
**/
data = xml.childNodes[i].firstChild.nodeValue;
}
if(tag != ') {
/**
* 判断目标对象的种类,并用相应的方式对其赋值
**/
if(! (tag = $(tag))) return;
switch(tag.nodeName) {
case 'INPUT':
case 'TEATAREA':
tag.value = data;
break;
default:
tag.innerHTML = data;
}
}else {
/**
* 执行规定的动作,data必须是合法的javascript语句
**/
try {
eval(data);
}catch(e) {}
}
}
}
}
/**
* 发送数据
**/
xmlhttp.send(post_data);
delete xmlhttp;
}
第六个ajax类
//Ajax Start
function Ajax_GetXMLHttpRequest() {
if (window.ActiveXObject) {
return new ActiveXObject("Microsoft.XMLHTTP");
}
else if (window.XMLHttpRequest) {
return new XMLHttpRequest();
}
}
function Ajax_CallBack(FormName,ID,URL,IsAlert){
var x = Ajax_GetXMLHttpRequest();
var ID = document.getElementById(ID);
x.open("POST",URL);
x.setRequestHeader("REFERER", location.href);
x.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
x.onreadystatechange = function(){if(x.readyState == 4 && x.status == 200){if(IsAlert){x.responseText?alert(x.responseText):alert('添加成功');}else if(ID){ID.innerHTML=x.responseText;}}}
var encodedData=""
if (document.forms.length > 0 && FormName) {
var form = document.forms[FormName];
for (var i = 0; i < form.length; ++i) {
var element = form.elements[i];
if (element.name) {
var elementValue = null;
if (element.nodeName == "INPUT") {
var inputType = element.getAttribute("TYPE").toUpperCase();
if (inputType == "TEXT" || inputType == "PASSWORD" || inputType == "HIDDEN") {
elementValue = escape(element.value);
} else if (inputType == "CHECKBOX" || inputType == "RADIO") {
if (element.checked) {
elementValue = escape(element.value);
}
}
} else if (element.nodeName == "SELECT" || element.nodeName == "TEXTAREA") {
elementValue = escape(element.value);
}
if (elementValue) {
if(encodedData==""){
encodedData = element.name + "=" + encodeURIComponent(elementValue);
}
else{
encodedData += "&" + element.name + "=" + encodeURIComponent(elementValue);
}
}
}
}
}
x.send(encodedData);
}
//Ajax End
调用方法:
<input type="text" name="UserName" size="40" onblur="CheckUserName(this.value)" /> <span id="CheckUserName" style="color:#FF0000"></span>
JS:
Ajax_CallBack(false,"CheckUserName","Loading.asp?menu=CheckUserName&UserNameLength="+UserName.length+"&UserName=" + escape(UserName));