/*Name : kessToolType : javascriptFun  : ToolDate : 2016年8月23日 16:13:15by   : kessnote : 重写
*/
(function (window, undefined) {//获取的是元素的 element 类型var Kess = function (selector, context) {return new Kess.fn.init(selector, context);};//要实现一个选择器  作用就是 选择 dom节点 //对对象进行处理 Kess.fn = Kess.prototype = {//初始化 元素 init: function (selector, context) {//证明,直接传过来的是 document 对象if (selector.nodeType === 1) {//那么直接把这个对象传过去this[0] = selector;this.length = 1;return this;}else if (typeof selector == "string") {var obj = document.getElementById(selector.replace("#", ""));if (obj != null && obj.nodeType === 1) {this[0] = obj;this.length = 1;return this;}}//否则就查找出这个对象var obj = context || document;var noteList = obj.querySelectorAll(selector);//获取全部对象列表this.length = noteList.length;for (var i = 0; i < this.length; i += 1) {this[i] = noteList[i];}return this;}}//实现扩展方法Kess.extend = Kess.fn.extend = function (source) {for (var property in source) {if (source.hasOwnProperty(property)) {this[property] = source[property];}}return this;};//原型传递。Kess.fn.init.prototype = Kess.prototype;//设置为全局变量window.Kess = Kess;
})(window);//把全局变量给传递进去
//下边写一些工具的扩展方法
Kess.extend({//判断是否是window对象isWindow: function (obj) {return obj != null && obj.window == window;},//判断是否为对象isObject: function (obj) {return Object.prototype.toString.call(obj) == "[object Object]";},//判断是否是 数组isArray: function (obj) {return Object.prototype.toString.call(obj) == "[object Array]";},//判断是否是 函数isFunction: function (obj) {return Object.prototype.toString.call(obj) == "[object Function]";},//判断是否是 字符串isString: function (obj) {return Object.prototype.toString.call(obj) == "[object String]";},//判断是否是布尔变量isBool: function (obj) {return Object.prototype.toString.call(obj) == "[object Boolean]";},//判断字符串是否为空isEmpty: function (obj) {return (obj == "" && this.isString(obj));},//判断是否为null或""isNullOrEmpty: function (obj) {if (typeof (obj) == "undefined") {return true;} else if (obj == null) {return true;} else if (obj == '') {return true;} else {return false;}},//判断是否为nullisNull: function (obj) {return (obj == null && this.isObject(obj));},//把对象转变为 URL 参数toUrlParames: function (obj) {var str = "";if (!this.isNull(obj)) {for (var item in obj) {str += item + '=' + obj[item] + '&';}str = str.slice(0, str.length - 1);//去掉最后一个&号} else if (this.isString(obj)) {str = obj;}return str;},//把一个对象的内容放入到另外一个对象里面toObject: function (old, xin, IsMore) {if (!this.isNull(old) && !this.isNull(xin)) {for (var items in xin) {if (IsMore) {old[items] = xin[items];} else {if (old.hasOwnProperty(items)) {old[items] = xin[items];}}}}return old;}
});
//下边是自己写的一些常用远程调用的方法
Kess.extend({//设置ajax默认值ajaxSettings: {url: location.href,global: true,type: "POST",contentType: "application/x-www-form-urlencoded",processData: true,async: true,cache: false,accepts: {xml: "application/xml, text/xml",html: "text/html",script: "text/javascript, application/javascript",json: "application/json, text/javascript",text: "text/plain",_default: "*/*"}},//ajaxCore ajax 核心方法ajaxCore: function (config) {//数据初始化默认值var success = config.success || function () { },faill = config.faill || function () { },async = Kess.isBool(config.async) ? config.async : this.ajaxSettings.async,cache = Kess.isBool(config.cache) ? config.cache : this.ajaxSettings.cache,processData = Kess.isBool(config.processData) ? config.processData : this.ajaxSettings.processData,type = config.type ? config.type.toUpperCase() : this.ajaxSettings.type,xmlhttp = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP'),timeT = "_t=" + Math.random(),url = config.url || window.location.href.split('#')[0],canshu = processData ? Kess.toUrlParames(config.data) : config.data;//先获取参数if (type == "GET") {url += config.url.indexOf('?') == -1 ? '?' + canshu : '&' + canshu;}//处理参数config.data = "";//获取数据xmlhttp.open(type, config.url, async);xmlhttp.onreadystatechange = function () {if (xmlhttp.readyState == 4) {if (xmlhttp.status == 200) {console.log(xmlhttp.getResponseHeader("content-type"));if (!Kess.isObject(xmlhttp.responseText)) {success(JSON.parse(xmlhttp.responseText));}else {success(xmlhttp.responseText);}}else {faill(xmlhttp);}}}xmlhttp.send(config.data);},//ajax方法ajax: function (config) {var type = config.type || 'POST', processData = this.isBool(config.processData) ? config.processData : true, dataType = config.dataType;config.type = type = type.toUpperCase();//全部转换为大写config.url = config.url || window.location.href.split('#')[0];//对url进行赋值if (processData) {if (Kess.isObject(config.data)) {if (dataType == "json") {config.data = JSON.stringify(config.data);}else {config.data = this.toUrlParames(config.data);}}}if (type == 'GET') {config.url += config.url.indexOf('?') == -1 ? '?' + config.data : '&' + config.data;}if (dataType == "json") {config.ContentType = "application/json; charset=utf-8";}this.ajaxCore(config);},//From 异步上传submit: function (config) {var data = config.data, temp;//如果表单名称存在if (!Kess.isEmpty(config.formName)) {temp = new FormData(document.forms.namedItem(config.formName));}//就伪装成表单进行发送if (!this.isNull(data)) {if (this.isNull(temp)) {temp = new FormData();}for (var item in data) {temp.append(item.toString(), data[item]);}}if (!this.isNull(temp)) {config.data = temp;}config.setHeader = false;config.type = "POST";//开始把它发送出去this.ajaxCore(config);},//getJson  jsonp 跨域获取getJson: function (config) {var callname = config.callname || "callback", callback = config.callback || 'Kess' + parseInt(Math.random() * 1000), success = config.success || function () { };config.data = config.data ? config.data : config.data = new Object();config.data[callname] = callback;config.url = config.url || window.location.href.split('#')[0];//当然,参数只能由地址里面了config.data = this.toUrlParames(config.data);config.url += config.url.indexOf('?') == -1 ? '?' + config.data : '&' + config.data;//设置全局回调window[callback] = function (data) {//调用匿名函数success(data);//清除全局函数window[callback] = undefined;try {delete window[callback];} catch (e) { }//确保js标签已被删除if (head) {head.removeChild(script);}}//一个获取js的文件的方法var head = document.getElementsByTagName("head")[0] || document.documentElement;var script = document.createElement("script");script.src = config.url;var done = false;//文件加载完毕后,处理script.onload = script.onreadystatechange = function () {if (!done && (!this.readyState === "loaded" || this.readyState === "complete")) {done = true;//加载完毕,就清除js标签script.onload = script.onreadystatechange = null;if (head && script.parentNode) {head.removeChild(script);}}};//开始加载文件head.insertBefore(script, head.firstChild);},//get方法get: function (config) {config.type = 'GET';config.url = config.url || window.location.href.split('#')[0];config.data = this.toUrlParames(config.data)config.url += config.url.indexOf('?') == -1 ? '?' + config.data : '&' + config.data;this.ajaxCore(config);},//post方法post: function (config) {config.type = 'POST';var processData = config.processData || true, dataType = config.dataType || "";config.url = config.url || window.location.href.split('#')[0];if (processData) {if (Kess.isObject(config.data)) {if (dataType == "json") {config.data = JSON.stringify(config.data);}else {config.data = this.toUrlParames(config.data);}}}if (dataType == "json") {config.ContentType = "application/json; charset=utf-8";}this.ajaxCore(config);}});

具体的用法:

//测试的是  asmx 功能 测试成功,建议用 post方法
Kess.ajax({url: "webservice1.asmx/api",data: { name: "你是大笨蛋" },dataType: "json",success: function (data) {alert(data + JSON.stringify(data));}
});
//这个是直接用post方法 简单直接,方便
Kess.post({url: "webservice1.asmx/api",data: { name: "你是大笨蛋" },dataType: "json",success: function (data) {alert(data + JSON.stringify(data));}
});
// jsonp 跨域正常
Kess.getJson({url: "http://www.runoob.com/try/ajax/jsonp.php",callname: "jsoncallback",success: function (data) {alert(data + JSON.stringify(data));}
});
//表单异步上传
function doUpload() {Kess.submit({url: "index.ashx",formName: "uploadForm",data: { id: "123" },success: function (data) {alert(data + JSON.stringify(data));}});
}

自己以前写的一个简单的jq,包含了 ajax,get,post,submit 等方法还有jsonp的思想相关推荐

  1. easy-mock写的一个简单的模拟二页的反馈

    用easy-mock写的一个简单的模拟二页的反馈,因为后端团队比较传统,所以设计的结构不太规范. 功能:每页10条,共2页,共12条记录,超出参数范围会返错误码: easy模板: {code: fun ...

  2. AndroidSDK开发6我用kotlin协程写了一个简单sdk

    目录 AndroidSDK开发6我用kotlin协程写了一个简单sdk 1.kotlin的依赖和导包如下:(//如果不使用协程可以去掉协程的导包减少sdk包大小) 2.Application代码如下: ...

  3. 用shell脚本写的一个简单的俄罗斯方块

    用shell脚本写的一个简单的俄罗斯方块 代码 代码 测试 下载链接 代码 代码 #!/bin/bash #version 1.2,若非正常退出,请使用附带的killel.sh脚本杀死进程 #定义用于 ...

  4. 最近写了一个简单的面向对象的脚本语言 Q 语言

    最近写了一个简单的面向对象的脚本语言 Q 语言,语法类似于 Javascript, 加入了一些 python 的语法功能. 同时实现了部分的 Javascript prototype 的功能 (个人觉 ...

  5. 自己写的一个简单的android记事本app

    自己写的一个简单的记事本app,效果如下: 一.首先是第一个界面的编写,最上面是一个TextView,中间是一个Linearlayout中嵌套一个listview布局,最下面是一个button.下面附 ...

  6. 用li写的一个简单的横向导航菜单demo

    用ul li写的一个简单的横向导航菜单,很实用: /* 所有class为menu的div中的ul样式 */ div.menu ul { list-style:none; /* 去掉ul前面的符号 */ ...

  7. 用VB6写的一个简单俄罗斯方块代码

    网络上有很多俄罗斯方块代码.它们大都为了视觉效果,程序比较复杂,不利于学习游戏编程.所以我写了个简单俄罗斯方块代码,尽量用VB本身的功能,没有复杂的DirectX. 下载(注意修改下载后的扩展名) m ...

  8. php和python写爬虫-一个简单的Python写的XML爬虫

    一个简单的Python写的XML爬虫 来源:程序员人生 发布时间:2013-11-06 16:22:29 阅读次数:1578次 原理很简单,读XML结构,返回值,判断,根据返回的值得到下一个XML的地 ...

  9. 手写了一个简单的JSON解析器,网友直乎:牛!

    作者 | 田小波 来源 | http://r3m2u.cn/4455O 背景 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.相对于另一种数据交换格式 X ...

最新文章

  1. 我的工作日常:一个CSS问题引起的小插曲
  2. win7设置html,Windows7怎么设置默认浏览器?
  3. 六大方法来对付网站出现的负面信息
  4. [Beego模型] 五、构造查询
  5. IPython notebook(Jupyter Notebook) 的使用
  6. [MATLAB]图像处理——交通标志的识别
  7. kali linux电脑配置要求,Kali Linux下配置PM3运行环境
  8. CTP程序化交易入门系列之五:现手、增仓、开平、对手盘计算
  9. java 电子栅栏,Java Exchanger栅栏
  10. Problem A: 小学生的算术题
  11. 如何在一个事件中使用(调用)另一个事件
  12. 1987年,国际C语言混乱代码大赛
  13. Oracle EBS 常用表 查询语句
  14. 【经典面试题】小程序与H5、APP、公众号的区别到底是什么?
  15. 清除Chrome浏览器下默认浅黄色背景(保存密码时出现)
  16. 编译原理 第二章 程序设计语言及其文法
  17. 信泰人寿总裁谭宁:中小险企发展一定要顺应市场变化
  18. python同步远程文件夹_python pyinotify 监控远程文件夹来实现即时全量同步
  19. 为什么毕业论文要查重?
  20. python利用多线程批量下载高清美女图片(350秒下载近3600张1.2个G的照片,地址可变)

热门文章

  1. 数字电路硬件设计系列(十八)之eMMC电路设计
  2. Linux基础开学典礼
  3. python pprint用法,Python中的pprint(漂亮打印机)
  4. 在conda虚拟环境中安装ipython
  5. API跟单社区跟单技术经验
  6. python SQLite数据库操作
  7. 微信小程序UI组件的推荐以及使用
  8. 苹果手机怎么使用word
  9. 制作labelme数据集(tusimple数据集)
  10. 快递物流行业总结(二)国家层面支持与物流地产