Ajax的封装。
封装 Ajax
因为Ajax 使用起来比较麻烦,主要就是参数问题,比如到底使用GET 还是POST;到
底是使用同步还是异步等等,我们需要封装一个Ajax 函数,来方便我们调用。
封装支持接收来自服务端的数据,不可以发送数据到服务端
/** * 此封装只支持接收来自服务端的数据,不可以发送数据到服务端 */ function ajax(obj) { var xhr = new XMLHttpRequest(); obj.url = obj.url + '?rand=' + Math.random(); xhr.open(obj.method, obj.url, obj.async); xhr.send(null); if (obj.async === false) { callback(); } if (obj.async === true) { xhr.onreadystatechange = function () { if (xhr.readyState == 4) { callback(); } }; } function callback () { if (xhr.status == 200) { obj.success(xhr.responseText); //回调 } else { alert('数据返回失败!状态代码:' + xhr.status + ',状态信息:' + xhr.statusText); } } }
把上面的代码封装在ajax2.js中,在页面上引入该文件。
<!DOCTYPE html> <html> <head> <title>Ajax的封装</title> <meta charset="utf-8"> <script src="ajax2.js"></script> </head> <body> <button id="btn">调用Ajax</button> <script> document.getElementById("btn").onclick=function(){ ajax({ method : 'get', url : 'http://localhost:3000/api/2', success : function (text) { alert(text); }, async :false }); }; </script> </body> </html> 7.2 封装支持接收来自服务端的数据,又可以发送数据到服务端 function ajax(obj) { var xhr = new XMLHttpRequest(); obj.url = obj.url + '?rand=' + Math.random(); obj.data = params(obj.data); if (obj.method === 'get') { obj.url = obj.url.indexOf('?') == -1 ? obj.url + '?' + obj.data : obj.url + '&' + obj.data; } if (obj.async === true) { xhr.onreadystatechange = function () { if (xhr.readyState == 4) { callback(); } }; } xhr.open(obj.method, obj.url, obj.async); if (obj.method === 'post') { xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); xhr.send(obj.data); } else { xhr.send(null); } if (obj.async === false) { callback(); } function callback () { if (xhr.status == 200) { obj.success(xhr.responseText); //回调 } else { alert('数据返回失败!状态代码:' + xhr.status + ',状态信息:' + xhr.statusText); } } } //名值对编码 function params(data) { var arr = []; for (var i in data) { arr.push(encodeURIComponent(i) + '=' + encodeURIComponent(data[i])); } return arr.join('&'); }
希望能够帮到你!
Ajax的封装。的更多相关文章
- 原生态AJAX详解和jquery对AJAX的封装
AJAX: A :Asynchronous [eI`sinkrenes] 异步 J :JavaScript JavaScript脚本语言 A: And X :XML 可扩展标记语言 AJAX现在 ...
- 【前端学习笔记04】JavaScript数据通信Ajax方法封装
//Ajax 方法封装 //设置数据格式 function setData(data){ if(!data){ return ''; } else{ var arr = []; for(k in da ...
- 原生ajax与封装的ajax使用方法
当我们不会写后端接口来测试ajax时,我们可以使用node环境创建一个本地服务器. 1.创建一个本地服务器可参考http://www.cnblogs.com/heyujun-/p/6793900.ht ...
- Ajax入门(二)Ajax函数封装
如果看了的我上一篇博客<Ajax入门(一)从0开始到一次成功的GET请求>的话,肯定知道我们已经完成了一个简单的get请求函数了.如下: 1234567891011121314151617 ...
- js进阶ajax函数封装(匿名函数作为参数传递)(封装函数引入文件的方式非常好用)
js进阶ajax函数封装(匿名函数作为参数传递)(封装函数引入文件的方式非常好用) 一.总结 2.匿名函数作为参数传递 二.js进阶ajax函数封装 ajax1.js function ajax(ur ...
- jQuery-实现简单的Ajax请求封装
封装的意义在于复用,在于减少重复的代码. 我在项目中做了简单的Ajax请求封装,实现方式如下: //封装Ajax请求 $.extend({ ajaxDirect:function(url,type,d ...
- JQ中的Ajax的封装
1.认识JQ中ajax的封装 jQ 对于ajax的封装有两层实现:$.ajax 为底层封装实现:基于 $.ajax ,分别实现了$.get 与$.post 的高层封装实现: 2.Ajax的底 ...
- Jquery Ajax简单封装(集中错误、请求loading处理)
Jquery Ajax简单封装(集中错误.请求loading处理) 对Jquery Ajax做了简单封装,错误处理,请求loading等,运用到项目中集中处理会很方便. 技术层面没有什么好说的,请求是 ...
- Ajax的封装,以及利用jquery的ajax获取天气预报
1.Ajax的封装 function ajax(type,url,param,sync,datetype,callback){//第一个参数是获取数据的类型,第二个参数是传入open的url,第三个是 ...
随机推荐
- 【转】MySQL my.cnf 参数 详解
[client] port = 3306 //客户端端口号为3306 socket = /tmp/mysql.sock //套接字文件(sockets),这种文件一般用在网络上的资料套 ...
- Docker 安装、卸载、启动、停止
1.1 查看当前系统的内核版本 查看当前系统的内核版本是否高于 3.10 英文文档:https://docs.docker.com/ 中文文档:https://docs.docker-cn.com/ ...
- 一、JsonTree
一.JsonTree [ {"id":"4","pid":"1","name":"大家电& ...
- codeforces 57 C Array(简单排列组合)
C. Array time limit per test 2 seconds memory limit per test 256 megabytes input standard input outp ...
- mepg
MPEG(Moving Picture Experts Group,动态图像专家组)
- hadoop学习一
一.基本概念https://blog.csdn.net/gwd1154978352/article/details/81095592 二.安装hadoophttps://blog.csdn.net/s ...
- FCC 成都社区·前端周刊 第 9 期
1. Node.js 10 将带来什么? Node.js 10 的第一个版本将于本周二(4 月 24 日)发布,并将在 10 月份推出 LTS 版本,将带来哪些更新? N-API,持续 HTTP/2 ...
- 1.Linux命令行快捷键、Vim
1. 命令终端的快捷键使用 ctrl+b 左移光标 ctrl+f 右移光标 ctrl+u 删除光标左边的内容 ctrl+k 删除光标右边的内容 ctrl+w 删除光标前的一个单词 =esc+ctrl+ ...
- 31.密码学知识-证书CA/PKI-8——2019年12月19日
1. 证书 公钥证书(Public-Key Certificate,PKC)其实和驾照很相似,里面记有姓名.组织.邮箱地址等个人信息,以及属于此人的公钥, 并由认证机构(Certification A ...
- Python中decode与encode的区别
摘抄: 字符串在Python内部的表示是Unicode编码,因此,在做编码转换时,通常需要以unicode作为中间编码,即先将其他编码的字符解码(decode)成unicode,再从unicode编码 ...