浅谈jQuery异步对象(XMLHttpRequest)


Posted in Javascript onNovember 17, 2014

我们先来看看异步对象五部曲

这是post请求的、

 //1.00创建异步对象

            var xhr = new XMLHttpRequest();

            //2.0

            xhr.open("post", url,params, true);

            //3.0将参数使用Formdata属性传递

            xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");

            //4.0设置回调函数

            xhr.onreadystatechange = function () {

                if (xhr.readyState == 4 && xhr.status == 200) {

                    alert(xhr.responseText);

                }

            }

            //5.0传递参数

            xhr.send(params);

结合get请求做一个异步对象的封装

get 请求中的

  xhr.setRequestHeader("If-Modified-Since", "0"); 是为了清除缓存

而post请求的

 xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");

是为了传输方式
在<from method='post' type="">
<from>中的type可以得到三种方式,其中包括application/x-www-form-urlencoded
 

var ajaxHelp = {

    CreatXHR: function () {

        //创建异步对象

        var xhr = new XMLHttpRequest();

        return xhr;

    },

    //ajax的get请求

    AjaxGet: function (url, callBack) {

        this.AJaxCommon("get", url, null, callBack);

    },

    //ajax的post请求

    AjaxPost: function (url, params, callBack) {

        this.AJaxCommon("post", url, params, callBack);

    },

    AJaxCommon: function (method, url, params, callBack) {

        //1.0

        var xhr = this.CreatXHR();

        //2.0

        xhr.open(method, url, true);

        //3.0

        if (method == "get") {

            xhr.setRequestHeader("If-Modified-Since", "0");

        } else {

            xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");

        }

        //4.0

        xhr.onreadystatechange = function () {

            if (xhr.readyState == 4 && xhr.status == 200) {

                var datas = JSON.parse(xhr.responseText);

                //执行回调函数

                callBack(datas);

            }

        }

        //5.0

        xhr.send(params);

    }

};

ps:在JQuery里面是有$.ajax  和$.get /   $.Post  等异步请求的方法的。以前的封装就不用了。额。好扯。其实他们底层也是这样的写的呢。JQuery就是为了解决各个浏览器的兼容性问题而已

以上就是本人对于jQuery异步对象(XMLHttpRequest)的理解,如有遗漏,麻烦联系我,补充上。

Javascript 相关文章推荐
javascript下给元素添加事件的方法与代码
Aug 13 Javascript
js实现按一下删除键删除整个单词附demo
Sep 05 Javascript
js实现二代身份证号码验证详解
Nov 20 Javascript
jquery SweetAlert插件实现响应式提示框
Aug 18 Javascript
jquery实现输入框实时输入触发事件代码
Dec 21 Javascript
bootstrap table实现单击单元格可编辑功能
Mar 28 Javascript
利用js的闭包原理做对象封装及调用方法
Apr 07 Javascript
轻量级富文本编辑器wangEditor结合vue使用方法示例
Oct 10 Javascript
Vue组件内部实现一个双向数据绑定的实例代码
Apr 04 Javascript
茶余饭后聊聊Vue3.0响应式数据那些事儿
Oct 30 Javascript
nuxt 实现在其它js文件中使用store的方式
Nov 05 Javascript
JavaScript实现网页下拉菜单效果
Nov 20 Javascript
node.js中watch机制详解
Nov 17 #Javascript
z-blog SyntaxHighlighter 长代码无法换行解决办法(jquery)
Nov 16 #Javascript
js构造函数、索引数组和属性的实现方式和使用
Nov 16 #Javascript
JQuery表单验证插件EasyValidator用法分析
Nov 15 #Javascript
不到30行JS代码实现Excel表格的方法
Nov 15 #Javascript
Node.js中HTTP模块与事件模块详解
Nov 14 #Javascript
jquery中append()与appendto()用法分析
Nov 14 #Javascript
You might like
上传多个文件的PHP脚本
2006/11/26 PHP
php中判断一个字符串包含另一个字符串的方法
2007/03/19 PHP
PHP经典面试题集锦
2015/03/19 PHP
php动态读取数据清除最右边距的方法
2017/04/12 PHP
Laravle eloquent 多对多模型关联实例详解
2017/11/22 PHP
jquery1.4 教程二 ajax方法的改进
2010/02/25 Javascript
jquery 如何动态添加、删除class样式方法介绍
2012/11/07 Javascript
使用javascipt---实现二分查找法
2013/04/10 Javascript
jquery+ajax验证不通过也提交表单问题处理
2014/12/12 Javascript
JavaScript弹出新窗口后向父窗口输出内容的方法
2015/04/06 Javascript
JavaScript中的getTime()方法使用详解
2015/06/10 Javascript
AngularJS 简单应用实例
2016/07/28 Javascript
JS设置手机验证码60s等待实现代码
2017/06/14 Javascript
Vue.js常用指令的使用小结
2017/06/23 Javascript
如何编写一个完整的Angular4 FormText 组件
2017/11/18 Javascript
vue-路由精讲 二级路由和三级路由的作用
2020/08/06 Javascript
[02:12]Dota 2 推出全新英雄—— 电炎绝手
2019/08/23 DOTA
自动化Nginx服务器的反向代理的配置方法
2015/06/28 Python
Python中enumerate()函数编写更Pythonic的循环
2018/03/06 Python
Python3使用pandas模块读写excel操作示例
2018/07/03 Python
Python socket实现的简单通信功能示例
2018/08/21 Python
Python在图片中插入大量文字并且自动换行
2019/01/02 Python
实例详解Matlab 与 Python 的区别
2019/04/26 Python
python将视频转换为全字符视频
2019/04/26 Python
Python 转换文本编码实现解析
2019/08/27 Python
pygame实现成语填空游戏
2019/10/29 Python
tensorflow多维张量计算实例
2020/02/11 Python
Python发送邮件实现基础解析
2020/08/14 Python
Python实现LR1文法的完整实例代码
2020/10/25 Python
Lookfantastic西班牙官网:英国知名美妆购物网站
2018/06/13 全球购物
儿科护士自我鉴定
2013/10/14 职场文书
材料专业毕业生求职信
2014/02/26 职场文书
房展策划方案
2014/06/07 职场文书
小学老师对学生的评语
2014/12/29 职场文书
JavaScript实现简单拖拽效果
2021/09/15 Javascript
MySQL数据库查询之多表查询总结
2022/08/05 MySQL