少年不酷不帅 2019-06-29
我们在请求数据的时候,往往会使用到ajax,而且一般都是通过引入jQuery库,再使用。但是,如果我们想直接使用ajax怎么办呢,这个时候就可以自己写一个ajax,刚一听可能会觉得很难,但是看完我的文章后你肯定就会觉得原来这么简单~
想象一个场景,你在淘宝上看中一件物品,想加入购物车,但是呢,你点击添加购物车后,整个页面刷新了,你之前看的物品记录也没有了,这样是不是很烦(这是因为没有使用ajax更新数据时,会请求整个页面的数据,重新渲染)。
碰到这种情况,ajax就出场了,有了它,我们可以在点击添加商品后,只更新购物车中的物品数量就可以了,根本就不需要更新整个页面,用官方一点的话来说,就是可以控制网页的局部刷新。
ajax实现局部刷新的原理是通过XmlHttpRequest对象来向服务器发送异步请求,通过js操作相应的DOM来更新页面。
ajax实现异步请求的过程可以分为以下几个步骤:
从上面的介绍可以看出,ajax请求的核心在于XmlHttpRequest对象,所以了解了XmlHttpRequest的机制就相当于知道了ajax的执行过程。
在Chrome,Firefox,Opera,Safari以及IE7+都内建了XmlHttpRequest对象,但是IE5和IE6是使用ActiveX对象。
方法:
属性:
readyState: 对象状态值
0表示XmlHttpRequest对象已创建或者已经被abort()方法重置 1表示对象已经初始化,但是请求还未发送(调用了open()方法,send()方法还没有调用) 2表示请求已经发送,没有接收到响应信息(sed()方法已经被调用) 3表示已经接收到了所有的响应头,响应体开始接收但未完成 4表示响应信息已经全部接收
回答:http状态码是指服务器接收到请求后返回的一个状态码,其中比较常见的是200(请求成功),404(请求失败),500(服务器发生错误),更多参考这里;而对象状态值,是针对XmlHttpRequest对象的,前面已经解释了每个状态值代表的含义;它们俩之间的联系就是只有当请求过程全部完成后,才可以根据服务器返回的状态码调用不同的函数。
//封装一个ajax请求 function ajax(options){ //创建XMLHttpRequest对象 if(window.XMLHttpRequest){ var xhr = new XMLHttpRequest }else{ var xhr = new ActiveXObject() } //初始化参数的内容 options = options ||{} options.type = (options.type ||'GET').toUpperCase() options.dataType = options.dataType || 'json' var params = options.data //发送请求 if(options.type == 'GET'){ xhr.open('GET',options.url + '?' + params,true) xhr.send(null) }else if(options.type == 'POST'){ xhr.open('POST',options.url,true) xhr.send(params) // xhr.setRequestHeader('Content-Type', "application/x-www-form-urlencoded")//规定输出为键值对的形式 } //接收请求 xhr.onreadystatechange = function(){ if(xhr.readyState == 4){ var status = xhr.status if (status >= 200 && status < 300){ options.success && options.success(xhr.responseText,xhr.responseXML) }else{ options.fail &&options.fail(status) } } } } ajax({ type: 'post', dataType: 'json', data: {}, url: 'https://www.easy-mock.com/mock/5bbd92e0004caf3b6a68db6f/example/api/countEventsLevel', success: function(text,xml){//请求成功后的回调函数 console.log(text) }, fail: function(status){////请求失败后的回调函数 console.log(status) } })
其实与ajax请求相关的知识点很多,比如它的核心XmlHttpRequest对象,跨域问题等。由于本文中的重点在于手动实现ajax请求,所以这些内容暂时先不涉及,不过我会在文后将参考链接奉上,感兴趣的可以看看。
结束数据方法的参数,该如何定义?-- 集合为自定义实体类中的结合属性,有几个实体类,改变下标就行了。<input id="add" type="button" value="新增visitor&quo
本文实例讲述了php+ ajax 实现的写入数据库操作。分享给大家供大家参考,具体如下:。<input class="tel" type="text" placeholder="请输入您的手机号码&q