14 fail: null // 请求失败回调 15 } 三、Ajax主体函数 以上我们定义了一大串请求有关的数据,接下来我们就开始Ajax主体函数的书写,现在的Ajax方法是这样了...return target; 30 }; 31 32 33 // ... 34 return function (options) { 35 36 // 没有传参或者没有url,抛出错误...succCallback; 43 44 } 45 46 // ... 47 return function (options) { 48 49 // 没有传参或者没有url,抛出错误...return true; 64 } 65 66 // ... 67 return function (options) { 68 69 // 没有传参或者没有url,抛出错误...succCallback; 77 78 } 79 80 81 return function (options) { 82 83 // 没有传参或者没有url,抛出错误
JS原生Ajax Ajax=异步Javascript+XML; ajax是一种数据请求的方式,不需要刷新整个页面。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。... //调用ajax函数 ajax({ url:'....+params,true); xhr.send(null); }else if(options.type=='POST'){ xhr.open('POST',options.url,true...); //设置表单提交时的内容类型 xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); xhr.send...open()方法; 1-启动,调用了open()方法,未调用send()方法; 服务器连接已建立; 2-发送,已经调用了send()方法,未接收到响应; 请求已接收; 3-接收,已经接收到部分响应数据
/* *封装ajax函数 * @param options * options = { * type : "get|post", // 请求方式,默认为 get * url...function(responseData){}, // 请求成功时执行的函数 * error : function(err){} // 请求失败时执行的函数 * } */ function ajax...}; var method = (options.type || GET).toUpperCase(), url = options.url, queryString = null...url) return; if(options.data){ queryString = []; for(var attr in options.data){ queryString.push...method === "POST") xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); xhr.send
//封装一个ajax函数 // 参数约定: // url 必须 // method 可选, 默认是 get // data 可选, 可以是字符串, 也可以是对象( 键值对...) // fn 处理响应回来的数据, 函数需要有参数, 即响应回来的数据 function ajax( options ){ //定义参数 var url=options.url..., method=options.method || "GET", data=options.data || null, fn=options.fn ||...null //首先转换data参数 var tmp=[]; //如果传入的是字符串,不需要处理,如果传入的是一个键值对,转换成字符串 if(data !...typeof fn =="function"){ fn( xhr.responseText ); } } }; xhr.send
0:表示XMLHttpRequest实例已经生成,但是open()方法还没有被调用。...1:表示已调用open方法,但还未调用send方法(请求还未被发送出去),仍然可以使用setRequestHeader(),设定HTTP请求的头信息。...Unauthorized (未授权); 403:Forbidden(禁止访问); 404:Not Found(未找到该网址); 500:Internal Server Error (找到网址但服务器发生错误...如果本次请求没有成功或者数据不完整,该属性就会等于null。....); xhr.send(); //发送ajax请求,这时数据还没有到来,布尔值设为false lock = false; }); 9、封装AJAX实现加载更多 这里使用server-mock
在触发事件前,调用配置中的 error 方法,将 xhr 实例,错误类型 type 和 error 对象作为回调函数的参数。...= "string") options.data = $.param(options.data, options.traditional) if (options.data && (!...发送请求 xhr.send(settings.data ? settings.data : null) 发送请求很简单,调用 xhr.send 方法,将配置中的数据传入即可。...如果 dataType 为 xml ,则调用responseXML 方法 如果为 json ,返回的内容为空时,结果返回 null ,如果不为空,调用 $.parseJSON 方法,格式化为 json..., arguments)) } $.get 是 $.ajax GET 请求的便捷方法,内部调用了 $.ajax ,不需要指定请求类型。
如果只有一个简单的异步操作,我们可以稍费脑子理清执行顺序,但是如果有多个异步方法,呃,我们就可能掉进了回调陷阱,事情远远没有我们想到的那么简单,并且我们甚至还没考虑过异步中抛出的错误。...(null); ?...(null); }); return p; } 首先封装一个Promise对象,我们把响应事件封装在resolve方法中,如果仅仅是这样,那么和普通封装没有区别,我们接着来看看...并且catch方法会捕捉每一个异步方法中的错误,所有的错误都会冒泡到这里,如果catch方法出现了错误怎么办?别担心done()方法会处理最后的错误。...最后 相比传统的ajax方法,Promise的优雅之处在于 关注点分离,每一次调用只需要完成一个任务; 更符合人脑思考逻辑; 良好的错误处理逻辑,错误冒泡; all() 和 race()方法避免陷入回调地狱
使用xhr发起GET请求 步骤 1.创建xhr对象 2.使用xhr.open()函数 3.调用xhr.send()函数 4.监听xhr.onreadystatechange事件。...请求所处的状态,每个Ajax请求必然处于一下状态中的一个: 值 状态 描述 0 UNSENT XMLHttpRequest对象已被创建,但尚未调用open方法。...id=1') //调用send函数 xhr.send() //监听事件 xhr.onreadystatechange = function...xhr.open()函数 3.设置Content-Type属性(固定写法) 4.调用xhr.send()函数。...封装自己的Ajax函数 要实现的效果 定义一个名为itheima的ajax函数,导入js文件之后,可以进行调用文件内的相关函数。
; 创建新文件: ajax.js 6.1 餐前甜点 之前我们为了方便使用,封装过使用指定 id 获取DOM对象及获取xhr对象; 我们对之前的代码进行一次修改,使其更加优雅; 定义一个自调用匿名函数...(); } //将局部变量 gets 复制给顶层window对象,使其成为全局变量 window.ajax_get = gets; })(); 这样写并没有语法错误,也可以正常调用...(xhr.responseText); } } xhr.open('get',url); xhr.send(); } 前台调用修改: /...//声明ajax函数,并复制给$; $.get = function(url,callback,type=null){ var xhr = $.init(); //调用init,获取ajax对象...xhr.onreadystatechange = function(){ if(xhr.readyState == 4){ if(type==null)
Ajax技术的核心是XMLHttpRequest对象(简称XHR)。...return new ActiveXObject(arguments.callee.activeXString); } else { // XHR对象和ActiveX对象都不存在,则抛出错误...(null); 在接收到响应数据之前可以调用abort()方法来取消异步请求: xhr.abort(); xhr = null; // 解除引用,释放内存 2....uid=5&siteid=123" xhr.open("get", url, true); xhr.send(null); 4....error:在请求发生错误时触发。 abort:在因为调用abort()方法而终止时触发。 load:在接收到完整的响应数据时触发。
, "message": "账号或密码错误!"..., "message": "" } } } 在调用logout登出这个Ajax请求的时候且我们的conf.json中配置的是"login.logout":...重复请求 /** * 返回ajax 请求的统一封装 * @param Object option 请求配置 * @param {boolean} opts.showError 是否错误调用message...) { if (typeof options.data === 'object') { Object.keys(options.data).forEach((key) =>...encodeURIComponent(options.data[key])) delete options.data[key] } })
并创建一个respone拦截器,当服务端返回特殊的状态码,我们统一做处理,如未登录网络错误等操作。...{` let dataStr = JSON.stringify(options.data); let base64Str = base64Encrypt(dataStr); options.data..."`); } res.data = data; //调用自定义的success successCallback(res); } catch (e) { console.error(`'出错了,' + e...(`'404'`); } } } //执行微信的请求 wx.request(options); }); } } module.exports = { myRequest: myRequest | 页面调用示范...(与wx.request传参一致): const ajax = require(`'ajax.js'`); ajax.javaRequest({ url: '/xxx'`,` data: { xxxx:
一、Ajax的实现主要分为四部分: 1、创建Ajax对象 1 // 创建ajax对象 2 var xhr = null; 3 if(window.XMLHttpRequest){ 4 xhr =...Http状态码 15 ** 1xx :信息展示 16 ** 2xx :成功 17 ** 3xx :重定向 18 ** 4xx : 客户端错误...19 ** 5xx :服务器端错误 20 */ 21 if(xhr.status == 200){ 22 success(xhr.responseText...封装函数: 1 function Ajax(type, url, data, success, failed){ 2 // 创建ajax对象 3 var xhr = null;...failed(xhr.status); 45 } 46 } 47 } 48 } 49 } 50 51 // 测试调用
ajax的GET提交方式的原生代码: var xhr = null; if(window.XMLHttpRequest){ xhr = new XMLHttpRequest(); }else...; } } xhr.send(null); } XMLHttpRequest() 这个对象可以在不重新加载页面的情况下从后台获取数据,支持的浏览器有IE7+、Firefox、Chrome、Safari...open方法) 1(初始化)已调用send()方法,正在发送请求 2(发送数据)send()方法调用完成,但是当前的状态及http头未知 3(数据传送中)已接收部分数据,因为相应及http头不全,这时通过...responseText获取部分数据会出现错误 4(完成)数据接收完成,此时可以通过responseText获取完整的数据 status 请求状态 200(成功) 404(没有发现文件) 500(服务器内部错误...) responseText 请求成功后获取数据 原生ajax写法 ajax1.0,ie9及以下,ie10+支持ajax2.0 ajax2.0比ajax1.0: 1.多了FormData对象,xhr.send
此方法必须在open()方法后调用。...状态值 说明 解释 未发送 对象已创建,尚未调用open()方法 1 已打开 open()方法已调用,此时可以调用send()方法发起请求 2 收到响应头 send()方法已调用,响应头也已经被接收...responseText 将响应信息作为字符串返回 responseXML 将响应信息格式化为XML Document对象并返回(只读) responseXML属性在请求失败或相应内容无法解析时的值为null...在创建FormData对象后,可在调用Ajax对象的send()方法时作为参数传入,从而将表单数据发送给服务器。...; // 失败时执行的函数 } } }; xhr.send(options.data); }); }
header字段,否则调用就会报Refused to get unsafe header的错误。...以下3种情况下值都为null:请求未完成、请求失败、请求成功但返回数据无法被正确解析时 如何追踪ajax请求的当前状态 在发一个ajax请求后,如果想追踪请求当前处于哪种状态,该怎么做呢?...不过即使你真传入了参数,参数也最终被忽略,xhr.send(data)中的data会被置为 null. xhr.send(data)中data参数的数据类型会影响请求头部content-type的默认值...一旦程序抛出错误,如果不 catch 就无法继续执行后面的代码,所以调用 xhr.send(data)方法时,应该用 try-catch捕捉错误。...onloadstart 调用xhr.send()方法后立即触发,若xhr.send()未被调用则不会触发此事件。
false : true; // true var data = options.data; // 参数对象, 需要转换 var params = this.parse(data);...// $.ajax => 方法调用模式, 谁调用方法, this就指向谁 var dataType = options.dataType; var success = options.success...post") { xhr.setRequestHeader("content-type", "application/x-www-form-urlencoded"); } xhr.send..." 1.6 短信验证码必须是4位的数字,否则提示"验证码格式错误" 需求2:点击注册按钮时,按钮显示为"注册中..."..." 102 提示用户"验证码错误" 3.2 接口调用失败,提示"服务器繁忙,请稍后再试",恢复按钮的值 接口文档 接口说明:注册 接口地址:register.php 请求方式:post
此方法必须在open()方法后调用。...状态值 说明 解释 0 未发送 对象已创建,尚未调用open()方法 1 已打开 open()方法已调用,此时可以调用send()方法发起请求 2 收到响应头 send()方法已调用,响应头也已经被接收...responseText 将响应信息作为字符串返回 responseXML 将响应信息格式化为XML Document对象并返回(只读) responseXML属性在请求失败或相应内容无法解析时的值为null...在创建FormData对象后,可在调用Ajax对象的send()方法时作为参数传入,从而将表单数据发送给服务器。...; // 失败时执行的函数 } } }; xhr.send(options.data); }); }
header字段,否则调用就会报Refused to get unsafe header的错误。...以下3种情况下值都为null:请求未完成、请求失败、请求成功但返回数据无法被正确解析时 如何追踪ajax请求的当前状态 在发一个ajax请求后,如果想追踪请求当前处于哪种状态,该怎么做呢?...——xhr.onloadstart事件触发的时候,也就是你调用xhr.send()方法的时候。...一旦程序抛出错误,如果不 catch 就无法继续执行后面的代码,所以调用 xhr.send(data)方法时,应该用 try-catch捕捉错误。...onloadstart 调用xhr.send()方法后立即触发,若xhr.send()未被调用则不会触发此事件。
404 资源未找到 500 内部服务器错误,如asp代码错误等 onreadystatechange onreadystatechange:绑定一个事件处理函数,该函数用来处理readystatechange...2、设置回调函数:为Ajax对象的readystatechange事件设定响应函数 3、创建请求:调用XMLHttpRequest对象的open方法 4、发送请求:调用Ajax对象的send方法 1、...获取Ajax对象 function getXhr(){ var xhr = null; if(window.XMLHttpRequest){ xhr = new XMLHttpRequest...对象)不会添加该消息头,所以,需要调用setRequestHeader方法,添加这个消息头 4、发送请求 GET 请求 xhr.send(null) POST 请求 xhr.send(name =...GET请求: send方法内传递null 若要提交数据,则在open方法的“URL”后面追加 如:xhr.open(“get”,”xx.do?