封装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);


猜你喜欢
- 一、安装约定 mysql安装路径: /usr/local/mysql
- 前言python中有两种循环,while和for,两种循环的区别是,while循环之前,先判断一次,如果满足条件的话,再循环,for循环的时
- 1.安装数据库1)yum -y install mysql-server(简单)yum命令自动从网上寻找mysql服务资源,下载至本地并完成
- 问题Vue项目中需要用Echarts的柱状图显示数据,并且每次搜索要更新柱状图。这时候小编发现在控制台会出现这样的报错:原来的代码是这样的,
- 新手学习Python,之前在网上看见一位朋友写的40行Python代码搞定京东秒杀,想在淘宝上帮女朋友抢玩偶,所以就照猫画虎的写了下淘宝的秒
- 如下所示:<span style="font-size:18px;"></span>import
- MySQL UNION 操作符本教程为大家介绍 MySQL UNION 操作符的语法和实例。描述MySQL UNION 操作符用于连接两个以
- 下面我们以论坛排行榜举例说明:<% @ LANGUAGE="VBSCRIPT" %&
- python中eval函数的用法十分的灵活,这里主要介绍一下它的原理和一些使用的场合。下面是从python的官方文档中的解释: &
- Python的3.0版本,常被称为Python 3000,或简称Py3k。相对于Python的早期版本,这是一个较大的升级。为了不带入过多的
- 本文实例讲述了PHP封装的数据库模型Model类。分享给大家供大家参考,具体如下:<?php //引入配置文
- 或许你也经历过,很多人都说一个女人很漂亮,而你觉得很一般。有时候,我也尝试理解为什么会对某个女人情有独钟。通常,我用迷人来描述,但这个&qu
- pycharm是一款高效的python IDE工具,它非常强大,且可以跨平台,是新手首选工具!下面我给第一次使用这款软件的朋友做一个简单的使
- 两个代码,一个是把python当微信操作,可以查看自己的好友信息,群信息等。还可以定时发送文本,文件等。效果就和你本人操作一样,没差别。还有
- 前记在Python3.7后官方库出现了contextvars模块, 它的主要功能就是可以为多线程以及asyncio生态添加上下文功能,即使程
- 最近在使用webpack + vue做个人娱乐项目时,发现npm run build后,css js img静态资源文件均找不到路径,报40
- @keyup.enter失效问题情况一(我遇到的情况)@keyup.enter外部存在form表单,并且form表单里只有一个input原因
- 解决方法一:使用python的BeautifulSoup来抓取网页然后输出网页标题,但是输出的总是乱码,找了好久找到解决办法,下面分享给大家
- 前段时间被IE和JavaScript脚本引擎的Memory Leak问题弄得郁闷坏了,不过幸好现在总算是柳暗花明了,并且找到了一些IE中使用
- 下午在用python将Linux的conf配置文件转化成字典dict时遇到了一个奇怪的问题,原先conf配置文件中没有注释行(以#开头的行)