|
@@ -1,3 +1,180 @@
|
|
|
# xajax
|
|
|
|
|
|
-simple ajax class
|
|
|
+simple ajax class
|
|
|
+xajax使用文档
|
|
|
+
|
|
|
+刚接触ajax时(2007年),自己开始封装ajax函数,最早是函数形式;2011年用js比较多,参照dojo定型为现在的模式(再次致谢dojo)。
|
|
|
+提交数据时通常是提交form,最早每次去组合http格式提交字符串,嫌麻烦,剥离dojo的代码封装了form提交函数(参数自动编码,函数名都和dojo的一样,致谢dojo)。
|
|
|
+* 虽然可以增加其他如PUT、DELETE等函数,考虑日常没有使用到没有添加(减小体积?!谁知道呢,我觉得还是自己懒的缘故)。
|
|
|
+* 可以添加xajax.PostForm(...)这样的函数,考虑到有些时候提交几个form或者还要附加一些其他数据,故此不加!
|
|
|
+ 例子: var data = xajax.formToQuery(xajax.$('frmid')) + '&' + xajax.objectToQuery({'_xsrf':'0ed7684bffc4425883b1e3f824b53259','encoding':'utf-8'})
|
|
|
+
|
|
|
+ ps: 挺灵活的,可能是用C久了后遗症吧,能封装一些库函数就满足了。
|
|
|
+
|
|
|
+废话完毕,下面是简单示例:
|
|
|
+
|
|
|
+GET请求:
|
|
|
+xajax.Get({
|
|
|
+ url : '/ajax/get?name=ls&age=36&f='+Math.random(),
|
|
|
+ handleAs : 'json',
|
|
|
+ timeout: 60,
|
|
|
+ error : function(ioargs){
|
|
|
+ switch(ioargs.errno){
|
|
|
+ case xajax.ERR_TIMEOUT:
|
|
|
+ alert('timeout');
|
|
|
+ break;
|
|
|
+ case xajax.ERR_EXCEPTION:
|
|
|
+ alert(ioargs.err);
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ alert('error');
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ },
|
|
|
+ handle : function(obj, ioargs) {
|
|
|
+ if(obj){
|
|
|
+ alert('ok');
|
|
|
+ }
|
|
|
+ else{
|
|
|
+ alert('error')
|
|
|
+ }
|
|
|
+ }
|
|
|
+});
|
|
|
+
|
|
|
+POST请求:(默认标准编码提交)
|
|
|
+
|
|
|
+var data = 'name=ls&age=35';
|
|
|
+/**
|
|
|
+ form窗体提交
|
|
|
+ data = xajax.formToQuery(xajax.$('frmid'));
|
|
|
+ // frmid可以是字符串或form对象
|
|
|
+ */
|
|
|
+xajax.Post({
|
|
|
+ url : '/upload',
|
|
|
+ handleAs : 'json',
|
|
|
+ headers: {'X-Power': 'xajax0.4', 'Accept-Encoding': 'gzip, deflate, sdch'},
|
|
|
+ error : function(ioargs){
|
|
|
+ alert('error');
|
|
|
+ },
|
|
|
+ handle : function(obj, ioargs) {
|
|
|
+ alert('response');
|
|
|
+ },
|
|
|
+ data : data
|
|
|
+});
|
|
|
+
|
|
|
+POST请求:(提交 JSON 数据)
|
|
|
+
|
|
|
+var data = '{"name":"ls","age":35}';
|
|
|
+/**
|
|
|
+ form窗体提交
|
|
|
+ data = xajax.formToQuery(xajax.$('frmid'));
|
|
|
+ // frmid可以是字符串或form对象
|
|
|
+ */
|
|
|
+xajax.Post({
|
|
|
+ url : '/upload',
|
|
|
+ handleAs : 'json',
|
|
|
+ contentType: xajax.CONTENT_TYPE_JSON,
|
|
|
+ headers: {'X-Power': 'xajax0.4', 'Accept-Encoding': 'gzip, deflate, sdch'},
|
|
|
+ error : function(ioargs){
|
|
|
+ alert('error');
|
|
|
+ },
|
|
|
+ handle : function(obj, ioargs) {
|
|
|
+ alert('response');
|
|
|
+ },
|
|
|
+ data : data
|
|
|
+});
|
|
|
+
|
|
|
+属性
|
|
|
+ERR_OK 成功
|
|
|
+ERR_EXCEPTION 异常
|
|
|
+ERR_TIMEOUT 超时
|
|
|
+
|
|
|
+方法
|
|
|
+公有
|
|
|
+***********************
|
|
|
+$ 返回指定对象[数组],内部由 内部由 document.querySelector 获取对象;
|
|
|
+***********************
|
|
|
+$$ 同$,内部由 document.querySelectorAll 获取对象数组
|
|
|
+***********************
|
|
|
+xhrObj 获取ajax对象,兼容主流浏览器
|
|
|
+***********************
|
|
|
+xhr ajax请求
|
|
|
+ ----------------------------
|
|
|
+ @param method string // 请求方法,如:GET、POST、PUT、DELETE、HEAD等
|
|
|
+ @param args object // 请求参数对象
|
|
|
+ ----------------------------
|
|
|
+ {
|
|
|
+ url: '/ajax/...', // 请求地址,必须;GET时浏览器有缓存,不需要缓存的请添加随机参数
|
|
|
+ async: true, // 是否一步请求: true 是,false 否(同步请求)
|
|
|
+ data: null, /**
|
|
|
+ * 请求数据,默认为null,通常用于POST等提交数据操作,遵循http标准。
|
|
|
+ * 格式:"name=value&key=value"
|
|
|
+ * 注意:GET时不用设置该项
|
|
|
+ */
|
|
|
+ contentType: null, // 请求数据类型
|
|
|
+ headers: null, /**
|
|
|
+ * 请求数据头,keyvalue对象(每项为keyvalue格式),默认为null,如:
|
|
|
+ * {'Content-Type': 'application/x-www-form-urlencoded', 'X-Power': 'xajax0.4'}
|
|
|
+ */
|
|
|
+ handleAs: 'text', // 请求返回的数据类型,默认为'text',其他可选:'json'、'xml'、'javascript'
|
|
|
+ // 返回数据处理回调函数,必须
|
|
|
+ handle: function(obj, ioargs){
|
|
|
+ /**
|
|
|
+ * @param obj object、string或xml object 返回对象(或字符串)
|
|
|
+ * @param ioargs object 请求状态对象(见下说明)
|
|
|
+ */
|
|
|
+ },
|
|
|
+ // 错误回调处理函数,默认为null,不处理错误信息
|
|
|
+ error: function(ioargs){
|
|
|
+ /**
|
|
|
+ * @param ioargs object 请求状态对象(见下说明)
|
|
|
+ */
|
|
|
+ },
|
|
|
+ timeout: 0 // 请求超时,默认为0时不设置超时时间
|
|
|
+ }
|
|
|
+ ----------------------------
|
|
|
+ // 请求状态对象
|
|
|
+ {
|
|
|
+ status: 0, // HTTP请求返回状态,如:200,302,404等;为0时请求未完成错误
|
|
|
+ err: null, // 异常错误信息描述
|
|
|
+ errno: xajax.ERR_OK // 错误码, xajax.ERR_OK : 成功, xajax.ERR_EXCEPTION: 异常, xajax.ERR_TIMEOUT: 超时
|
|
|
+ }
|
|
|
+ ----------------------------
|
|
|
+ @param hasBody boolean 是否有请求数据
|
|
|
+***********************
|
|
|
+cancel 取消请求
|
|
|
+***********************
|
|
|
+Get GET方式发送请求
|
|
|
+ @param args 请求参数,见xhr说明
|
|
|
+***********************
|
|
|
+Post POST方式发送请求,增加请求数据头:"Content-Type: application/x-www-form-urlencoded"
|
|
|
+ @param args 请求参数,见xhr说明
|
|
|
+***********************
|
|
|
+isArray 指定参数是否是数组类型
|
|
|
+***********************
|
|
|
+isFunction 指定参数是否是函数类型
|
|
|
+***********************
|
|
|
+setValue html input对象keyvalue值存储
|
|
|
+ @param obj object // 值存储对象
|
|
|
+ @param key string/object // key对象或字符串(checkbox多选、multiple或name相同的为对象)
|
|
|
+ @param value string/object // key对象或字符串(checkbox多选、multiple或name相同的为对象)
|
|
|
+***********************
|
|
|
+fieldToObject html input对象转换为keyvalue对象
|
|
|
+***********************
|
|
|
+objectToQuery object转换为http请求字符串(自动url编码,编码为utf8格式),如:{name:'ls',age:36}转换为name=ls&age=35
|
|
|
+ @param obj object 转换对象
|
|
|
+***********************
|
|
|
+formToObject 指定form对象转换为keyvalue对象
|
|
|
+ @param obj object form对象
|
|
|
+***********************
|
|
|
+formToQuery 指定form对象转换为http请求字符串(自动url编码,编码为utf8格式)
|
|
|
+ @param obj object form对象
|
|
|
+
|
|
|
+私有
|
|
|
+_ioSetArgs 初始参数设置
|
|
|
+***********************
|
|
|
+_ioResponse 请求返回处理
|
|
|
+***********************
|
|
|
+_ioNotifyStart 请求通知
|
|
|
+***********************
|
|
|
+_ioInterval 超时处理函数
|