浅谈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 相关文章推荐
jQuery中filter(),not(),split()使用方法
Jul 06 Javascript
EXT窗口Window及对话框MessageBox
Jan 27 Javascript
Node.js实战 建立简单的Web服务器
Mar 08 Javascript
js获取及修改网页背景色和字体色的方法
Dec 29 Javascript
JavaScript数据推送Comet技术详解
Apr 07 Javascript
node.js + socket.io 实现点对点随机匹配聊天
Jun 30 Javascript
vue中实现在外部调用methods的方法(推荐)
Feb 08 Javascript
快速解决vue在ios端下点击响应延时的问题
Aug 27 Javascript
layui动态渲染生成左侧3级菜单的方法(根据后台返回数据)
Sep 23 Javascript
angular inputNumber指令输入框只能输入数字的实现
Dec 03 Javascript
微信h5静默和非静默授权获取用户openId的方法和步骤
Jun 08 Javascript
基于javascript原生判断DOM是否加载完毕
Oct 14 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+MSSQL分页的例子
2006/10/09 PHP
PHP中SESSION使用中的一点经验总结
2012/03/30 PHP
PHP抓取网页、解析HTML常用的方法总结
2015/07/01 PHP
tp5.1框架数据库子查询操作实例分析
2020/05/26 PHP
几款极品的javascript压缩混淆工具
2007/05/16 Javascript
分享别人写的一个小型js框架
2007/08/13 Javascript
javascript 表格排序和表头浮动效果(扩展SortTable)
2009/04/07 Javascript
JavaScript类库D
2010/10/24 Javascript
JavaScript动态调整TextArea高度的代码
2010/12/28 Javascript
php的文件上传入门教程(实例讲解)
2014/04/10 Javascript
jquery复选框checkbox实现删除前判断
2014/04/20 Javascript
javascript实现切换td中的值
2014/12/05 Javascript
jquery判断单选按钮radio是否选中的方法
2015/05/05 Javascript
javascript结合Flexbox简单实现滑动拼图游戏
2016/02/18 Javascript
jQuery实现鼠标滚动图片延迟加载效果附源码下载
2016/06/28 Javascript
BootStrap轻松实现微信页面开发代码分享
2016/10/21 Javascript
Vue中使用sass实现换肤功能
2018/09/07 Javascript
JS实现的排列组合算法示例
2019/07/16 Javascript
nodejs简单抓包工具使用详解
2019/08/23 NodeJs
vue element table中自定义一些input的验证操作
2020/07/18 Javascript
[01:11]辉夜杯战队访谈宣传片—CDEC.Y
2015/12/26 DOTA
PYTHON基础-时间日期处理小结
2018/05/05 Python
深入浅析Python传值与传址
2018/07/10 Python
Python树莓派学习笔记之UDP传输视频帧操作详解
2019/11/15 Python
解决python中0x80072ee2错误的方法
2020/07/19 Python
matplotlib图例legend语法及设置的方法
2020/07/28 Python
客服端调用EJB对象的几个基本步骤
2012/01/15 面试题
煤矿班组长的职责
2013/12/25 职场文书
缴纳养老保险的证明
2014/01/10 职场文书
培训主管岗位职责
2014/02/01 职场文书
《三袋麦子》教学反思
2014/03/02 职场文书
法制宣传日活动总结
2014/04/29 职场文书
社区党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
农村文化建设标语
2014/10/07 职场文书
三八节祝酒词
2015/08/11 职场文书
mysql使用 not int 子查询隐含陷阱
2022/04/12 MySQL