用promise封装ajax】的更多相关文章

Promise 封装ajax 成链式结构: var url = 'http'; function(method, url) { return new Promise(function(res, ret) { var oReq = new XMLHttpRequest(); oReq.onload = function() { var data = oReq.response; data = JSON.parse(data); res(data); } oReq.onerror = functio…
首先贴代码 var ajaxOptions = { url: 'url', method: 'GET', async: true, data: null, dataType: 'text', } function ajax(protoOptions) { var options = {}; for(var i in ajaxOptions){ options[i] = protoOptions[i] || ajaxOptions[i]; } return new Promise(function…
直接上代码: function Ajax(method, headers, url, data, progress = null) { return new Promise(function (resolve, reject) { let xhr = new XMLHttpRequest(); xhr.open(method,url);//配置 for (const key in headers) {//遍历header,设置响应头 let value = headers[key]; xhr.s…
promise的含义(本身不是异步,是封装异步操作的容器,统一异步的标准) promise对象的特点:对象的状态不受外界影响:一旦状态改变,就不会再变,任何时候都可以得到这个结果. function aaa() { const promise = new Promise(function (resolve, reject) { const xmlhttp = new XMLHttpRequest(); xmlhttp.open("post", "url"); xml…
有时候不想使用axios这样的外部依赖,想自己封装ajax,这里有两种方法 方法一,在单个页面内使用 封装的代码如下: beforeCreate () { this.$http = (() => { let createFetch = (type, url, params) => { return new Promise((resolve, reject) => { let xhr = new XMLHttpRequest() xhr.onreadystatechange = () =&…
基于promise的ajax封装 //调用方式: /* ajaxPrmomise({ url:, method:, headers:{} }).then(res=>{}) */ ;(function(window){ //设置默认的参数配置项 let _default = { url:'', baseURL:'', method:'GET', params:null, //get请求基于问号传参方式传递给服务器的内容 headers:{}, timeout:500, dataType:'json…
最近公司使用React作为前端框架,使用了异步请求访问,这里做下总结: React Native中虽然也内置了XMLHttpRequest 网络请求API(也就是俗称的ajax),但XMLHttpRequest 是一个设计粗糙的 API,不符合职责分离的原则,配置和调用方式非常混乱,而且基于事件的异步模型写起来也没有现代的 Promise 友好.而Fetch 的出现就是为了解决 XHR 的问题,所以react Native官方推荐使用Fetch API. fetch请求示例如下: return…
为何要封装接口? 有小程序开发的经验者,相信对微信API Request很熟悉了.对接接口时,有大部分的开发者都是直接调用request方法,去请求后台接口并渲染数据.诚然,直接使用api发起请求对接接口开发速度是快的,可是,一旦对接的接口多了起来,这样简单,直接的方法出现了很多缺陷. 难以维护.域名被换或者接口名被换,修改接口名得一个个文件找,而且可能不清楚有多少文件调用了需要修改的接口,导致效率低下 难以管理.无法了解到底用了哪些接口,难于统一修改,除非一个个找出了,并其归纳 代码重复.有些…
什么叫jsonp? jsonp是json with padding(填充式json或参数式json)的简写,是通过ajax请求跨域接口,获取数据的新实现方式 jsonp的实现原理: 动态创建script标签,因为script标签是没有同源策略限制,可以跨域的. 把script标签的src指向正式服务端地址,这个地址跟个参数callback=xxx, 服务端在返回数据时,在xxx里包裹一个方法(里面是返回的数据),相当于在前端执行xxx这个方法,但是浏览器并没有这个方法,所以在发送请求之前在win…
相信大家在做前后端数据交互的时候都会给请求做一些简单的封装就像之前封装ajax方法一样axios的封装也是一样的简单下面这个就是封装的axios的方法,require.js import axios from 'axios' axios.defaults.timeout = 5000 axios.defaults.baseURL = '接口名称-共用部分' /** * 封装post请求 * @param url * @param data * @returns {Promise} */ expo…
使用原生 的JS封装 Ajax,实现 仿JQuery的Ajax,post,get三种异步请求方式: var MAjax = { //根据浏览器创建异步对象 createXhr: function () { //经测试:IE7.0及以上版本的IE,两种异步创建的两种方式都支持 //如果XMLHttpRequest存在,则是IE7.0及其它内核,则直接创建异步对象(!==非全等于, === 全等于) if (typeof XMLHttpRequest !== 'undefined') { //相当!…
在我们请求数据时,完成页面跨域,利用原生JS封装的ajax和jsonp: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <script> //ajax 和jsonp 跨域的封装 var $={ //封装a…
即 Asynchronous [e'sɪŋkrənəs] Javascript And XML,AJAX 不是一门的新的语言,而是对现有技术的综合利用.本质是在HTTP协议的基础上以异步的方式与服务器进行通信. XMLHttpRequest可以以异步方式的处理程序,浏览器内建对象,用于在后台与服务器通信(交换数据) ,由此我们便可实现对网页的部分更新,而不是刷新整个页面. 封装ajax工具函数 $.ajax = function(options){ if(!options) return fal…
post function createXHR() { if (typeof XMLHttpRequest != 'undefined') { return new XMLHttpRequest(); } else if (typeof ActiveXObject != 'undefined') { var version = [ 'MSXML2.XMLHttp.6.0', 'MSXML2.XMLHttp.3.0', 'MSXML2.XMLHttp' ]; for (var i = 0; ver…
封装ajax原理 首先处理 用户如果不传某些参数,设置默认值 type默认get 默认url为当前页 默认async方式请求 data数据默认为{} 处理用户传进来的参数对象 遍历,拼接成key=value&key=value形式,加入数组 通过XMLHttpRequest对象创建xhr,早期的IE浏览器不支持XMLHttpRequest对象,通过var xhr = new ActiveXObject('Msxm12.XMLHTTP')创建 判断用户请求的方法 get:将数据拼接在url后面,…
<script> //封装ajax // 函数名 ajax // 函数的参数 // url: 请求的地址 // type: 请求的方式 get /post // data: 要上传的数据 要求是键值对的形式 // 函数的返回值 没有返回值 // 增加的功能: // 1. 如果没有传请求的地址,就没有必要执行后面的代码 // 2. 默认是get, 如果传post,则发post请求 // 3. 不需要再上传键值对的字符串了name=zs&age=18&sex=m // 而是上传一个…
支持get.post请求 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>自定义封装ajax</title> </head> <body> </body> </html> <script type="text/javascript"> function ajax(o…
思考一下: 通常我们在使用ajax来发送接口请求时,每一次都会调用ajax固定的元素,比如data.url.method.success.error等.那么我们想一下能不能先把ajax封装起来,在每次发送请求时只需要把参数传入,实现封装函数的调用就可以. 这样的话,每次请求都会变得简单优化,节省了很多行冗余的代码,不是嘛.....    接下来,我把代码实例写在下面. 1.假设现在需要发送一个接口请求. var fun;//定义一个载体. fun.viewProducts(id).then((r…
利用Promise实现ajax GET function getAjax(url) { return new Promise((resolved,rejected)=>{ //创建ajax对象 let ajax = new XMLHttpRequest(); //配置参数 ajax.open('get',url,true) //发送请求 ajax.send(); //请求成功之后 ajax.onload = function () { if(this.status === 200){ conso…
http://blog.sucaijiayuan.com/article/89 jquery框架的ajax方法固然好用,但是假如某天我们的项目不能引入jquery或项目需求很简单,没有很多交互功能,只需要ajax,这时引入jquery库会造成资源浪费,也会显得页面臃肿.这时我们就需要用原生JS写一个ajax函数了. /* 封装ajax函数 * @param {string}opt.type http连接的方式,包括POST和GET两种方式 * @param {string}opt.url 发送请…
写在前面的话,如果中间有什么不明白的,请先看封装ajax框架!(前言篇) 1.添写一个封闭函数 (function(){})(); 在一个项目中,可能会引用多个js框架,如果函数名相同,会有命名冲突,所以这里使用封闭函数. 2.封装一个函数,用于dom元素的获取 但$是局部变量,外面不能直接使用,所以需要添加window.$ = $: 表示为全局对象window添加一个"$"的属性,这个属性的值是当前局部变量$的值. 所以在外部,如果想获取某个dom元素,可以直接:$("co…
Ajax技术就是利用javascript和xml实现异步交互的功能. 首先先来介绍一下Ajax相关知识点,如果这些你都会的话,请直接跳转到封装ajax框架!(代码篇) 一.Ajax对象的创建 1.创建Ajax对象的方式 a.第一种方式是针对IE浏览器 b.第二种方式针对w3c:在IE的高版本(IE8+),已经支持了XMLHttpRequest类 2.解决兼容性 a.创建公共文件 public.js b.在需要使用ajax对象的页面中,包含以上js文件 二.ajax对象的相关属性和方法 方法: 1…
为什么需要封装呢?因为用的多,我想将其封装成函数,当我想用它时,只需将那个函数对应的js文件引入即可,而不要重复写很多相同代码,利于开发效率的提高. 无论是$.ajax或$.post.$.get等,在开发中是经常用到的.再比如一些前端框架,例如easyui.ext.js等,ajax也是封装的. 编程的世界,封装无处不在. 具体js代码如下: /** * 增删改通用ajax请求 * @param type * @param url * @param datatype * @param conten…
Jquery封装ajax   Load方法     <!-- 将jquery.js导入进来 -->     <script type="text/javascript" src="js/jquery-1.7.2.js"></script>     <script type="text/javascript">     $(function(){         $("a").cl…
封装ajax工具函数 首先要思考:1.为什么要封装它?提高开发效率2.把一些不确定的情况考虑在其中 a. 请求方式 b. 请求地址 c. 是否异步 d. 发送参数 e. 成功处理 f. 失败处理3.确定参数 a. Type--请求方式 get (get/post) b. Url--请求地址 默认当前地址 字符串 c. Async--是否异步 true (true/false) d. Data--发送的数据 {} 对象{name:xx} e. Success--成功回调 function 函数 函…
为什么要封装ajax,因为…… for(var i=0;i<20;i++){ $.ajax(……) } 的时候,整个页面都卡死了,于是,我开始找答案. 后来,找到了,就是jquery的ajax属于全局,当上文不执行完毕,其他的都动不了.于是乎有了封装ajax,将ajax作为局部使用,即可解决掉. function ajax(options) { options = options || {}; options.type = (options.type || "GET").toUp…
项目中有时候用不到jq,需要了解xmlhttp原理,自己写一套函数请求和发送数据! /* 封装ajax函数 * @param {string}opt.type http连接的方式,包括POST和GET两种方式 * @param {string}opt.url 发送请求的url * @param {boolean}opt.async 是否为异步请求,true为异步的,false为同步的 * @param {object}opt.data 发送的参数,格式为对象类型 * @param {functi…
原生JavaScript 封装ajax   function myajax(options){ //新建一个局部对象 用来存放用户输入的各种参数 var opt={ type:options.type||"get",//获取用户输入的传输方法,可选,不写为get data:options.data||"",//获取用户输入的数据 dataType:options.dataType||"",//获取用户输入的数据类型比如json 或者xml url…
目录 引言 封装ajax 案例:使用自封装ajax 案例:动态加载瀑布流 跨域 引言 对于Ajax现在相信大家已经不会陌生了,无论是原生的XMLHttpRequest方式发送还是通过jQuery框架中提供的$.ajax方式.但是从实际工作角度来说并不是所有的公司都喜欢采用上面两种方式进行请求的发送. 其原因在于: (1)原生的方式过于繁琐,并且大量重复代码. (2)jQuery的方式虽然方便,但必须引入jQuery框架, 而框架中不是所有的内容都能用到,这就造成了大量无用代码的堆积.占用资源 因…
Promise就是一个给一步操作提供的容器,在这个容器里,有两个阶段无法改变的阶段,第一个阶段就是Pending(进行),第二个阶段就是结果阶段,包含Fulfilled(成功).Rejected(失败)两个结果. 这两个结果不会改变.然后结果结束后就会用then来执行相应的结果. new Promise((resolve,reject)=>{ 相应操作 if(异步操作成功){ resolve(value) }else{ reject(error) } }).then(value=>{ // 成…