封装2个ajax函数
来源:51js 发布时间:2010-09-03 18:14:00
听说最近流行JQ风格的语法,不流行EXT风格了
一.
//ajax类
fw=window.fw||{};
fw.ajax = {
init : function (url, method){
this.url = url;
this.arg = null;
this.json = {};
this.method = method || "get";
return this;
},
//获取表单的值作为参数
setForm : function(form){
this.json = fw.getForm(form);
return this;
},
//直接赋值参数
setArg : function(o){
var a = [];
o = fw.merge(this.json, o);
for(var i in o){
a.push(i+"="+o[i]);
}
if(a.length>0){
a = a.join("&");
this.method=="get" ? this.url+="?"+a : this.arg=a;
}
return this;
},
//回调
callback : function(cb,tp){
var x = fw.xmlhttp();
x.open(this.method, this.url, true);
x.onreadystatechange = function(){
if(cb&&x.readyState==4&&(x.status==0||x.status==200)){
var v = x.responseText;
if(tp=="json") v = fw.parse(v);
cb(v);
}
}
x.send(this.arg);
}
}
//demo: fw.ajax.init("data/ajax.php","post").setForm("ajax_form").setArg({act:"show"}).callback(showResult,"json");
2.
function Ajax (Args){
var Args = Args || {}, XHR = (function() {
try {return new XMLHttpRequest();}catch(e){};
try {return new ActiveXObject('Msxml2.XMLHTTP');}catch(e){};
try {return new ActiveXObject('Microsoft.XMLHTTP');}catch(e){};
})();
var Data = !!Args.Data && (function() {
var tempArr = [];
for(var i in Args.Data) tempArr.push(i + '=' + Args.Data[i]);
return tempArr.join('&');
})();
XHR.open(Args.Method || 'GET', (Args.Url || document.URL) + (Data ? '?' + Data : ''), !!Args.CallBack);
!!Args.CallBack && (XHR.onreadystatechange = function(){
(XHR.readyState == 4 && XHR.status == 200) ? Args.CallBack.True.call(XHR) :
Args.CallBack.False && Args.CallBack.False.call(XHR.readyState < 4 ? XHR.readyState : XHR.status);
});
!!Args.Method && XHR.setRequestHeader('Content-type', 'application/x-www-form-urlencoded;charset=' + Args.CharSet || 'utf-8');
XHR.send(Data || null);
return XHR;
};
//调用说明:
Ajax({
Url : 'archiver/', //访问地址,选填,默认为当前页
Data : { //提交的数据列表,如果要将url后面的get参数写在这里,那么url请不要带参数,选填
wd : '51js'
},
Method : 'get', //模式,选填,默认为get
CharSet : 'gbk', //编码,选填,默认为utf-8
CallBack : { //回调函数,选填,为空表示整个过程为同步执行
True : function(){ //成功调用的函数,选填,函数自动替换this对象为XMLHTTPRequest对象
alert(this.responseText);
},
False : function(){ //加载或失败调用的函数,选填,函数自动替换this对象为readyState(加载中)或status(加载失败)
alert(this);
}
}
});
//同步get
//调用方法:alert(Ajax({Url : 'https://www.aspxhome.com/'}).responseText);
猜你喜欢
- 尝试安装server[justin@xen20-vm04 "]$ rpm -ivh MySQL-server-5.1.51-1.g
- 我们都知道ACCESS是ASP的亲密伙伴。因为两种最简单的东西碰在一起总能迸发出火花。然而,当我们过滤不严格的时候经常出现日文字符,这个时候
- 你用过css么?当然,我是指你喜欢做网页的话,用过?很好,那你用过它的特效么?没有?那请跟我来。让我先
- 软件环境: 1、操作系统:Windows 2000 Server 2、数 据 库:Oracle 8i R2 (8.1.7) for NT 企
- 比如说点的是图片的左边,还是右边,上边还是下边?点击图片左右显示上下张,我怎么知道?这样就可以做出像QQ空间那样,打开上一个图片和下一个图片
- 在一次ASP程序中不能正常连接MSSQL出现出错信息如下:以下为引用的内容:HTTP/1.1 200 OK S
- 一、无组件上传的原理我还是一点一点用一个实例来说明的吧,客户端HTML如下。要浏览上传附件,我们通过<input type="
- 输入汉字提示拼音,试试下面这个函数,不知是不是你要的那个:查询汉字便宜到词典网<%function getpychar(ch
- 以前我就是一篇博文 就给出一个好用的函数,它在我几篇博文中被广泛运用的。最近看了不少东西,于是便有了这篇博文,以梳理我学到的新东西。毫无疑问
- 解决Microsoft VBScript 运行时错误 (0x800A0046) 没有权限的解决方案,0x800a0046错误。前段时间在做站
- 4款JavaScript放大镜特效脚本。准确的说,Anythingzoomer和Bezoom才是正宗的放大镜特效,当鼠标悬浮在图片上时,能放
- 第一步一般是建立一个关键字替换表 如 id keyword url 等字段第二步是文章显示时把【文章】内容和【关键字替换表】对应的关键字替换
- 于是写测试程序。。。不行 下载最新的ODBC。。。还是不行 通过sql plus查询。。。咦?竟然也查不到。。。 于是,折腾。。。折腾。。。
- 提到sa弱口令,我们首先就会想到,许多数据库都有1个类似的超级管理员账号,比如:Oracle是"system"和&quo
- 1,exists和in的理解exists:如果子查询中包括某一行,那么就为TRUE in:如果操作数为TRUE等于表达式列表中的一个,那么就
- 一旦你已经为MySQL实例管理器设置了一个密码文件并且IM正在运行,你可以连接它。你可以使用mysql客户端工具通过标准MySQL API来
- 新一代W3C,xhtml代码规范,大家在设计网站的时候务必遵循这一规范 ,这将对网站的优化,网站的推广,搜索引擎的友好
- 一般我们可以使用背景图的方式给图片添加阴影,但对于不固定尺寸的图片如何实现呢?我们可以采取“视觉欺骗 * ”——定义渐变边框来实现运行代码框&
- ASP有一个最重要的功能,就是它可以让你非常轻松地连接数据库。通常都是和一个Access或者一个SQL数据库相连。因为Access是最容易起
- Mr.Think是一个喜欢简洁的人,喜欢如诗一样的代码.不喜欢.NET的代码,就是因为经常看到同事用VS后生成出来的一段段冗长的代码.在我的