浅谈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 相关文章推荐
[JS源码]超长文章自动分页(客户端版)
Jan 09 Javascript
Google Map API更新实现用户自定义标注坐标
Jul 29 Javascript
Google Dart编程语法和基本类型学习教程
Nov 27 Javascript
基于jQuery实现照片墙自动播放特效
Jan 12 Javascript
微信小程序 template模板详解及实例
Feb 21 Javascript
Bootstrap Table使用整理(三)
Jun 09 Javascript
详解windows下vue-cli及webpack 构建网站(三)使用组件
Jun 17 Javascript
Vue中的字符串模板的使用
May 17 Javascript
vue 标签属性数据绑定和拼接的实现方法
May 17 Javascript
微信小程序 函数防抖 解决重复点击消耗性能问题实现代码
Sep 12 Javascript
vue 导航内容设置选中状态样式的例子
Nov 01 Javascript
js实现网页版贪吃蛇游戏
Feb 22 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页面跳转代码 输入网址跳转到你定义的页面
2013/03/28 PHP
54个提高PHP程序运行效率的方法
2015/07/19 PHP
浅谈PHP中的那些魔术常量
2020/12/02 PHP
isArray()函数(JavaScript中对象类型判断的几种方法)
2009/11/26 Javascript
jquery 插件学习(一)
2012/08/06 Javascript
c#+jquery实现获取radio和checkbox的值
2020/09/12 Javascript
jQuery中常用的遍历函数用法实例总结
2015/09/01 Javascript
js中获取 table节点各tr及td的内容简单实例
2016/10/14 Javascript
学习 NodeJS 第八天:Socket 通讯实例
2016/12/21 NodeJs
浅谈jquery fullpage 插件增加头部和版权的方法
2018/03/20 jQuery
WebSocket的通信过程与实现方法详解
2018/04/29 Javascript
《javascript少儿编程》location术语总结
2018/05/27 Javascript
微信小程序wepy框架笔记小结
2018/08/08 Javascript
详解小程序开发经验:多页面数据同步
2019/05/18 Javascript
Vue基于iview实现登录密码的显示与隐藏功能
2020/03/06 Javascript
vue 项目中当访问路由不存在的时候默认访问404页面操作
2020/08/31 Javascript
[00:58]他们到底在电话里听到了什么?
2017/11/21 DOTA
[01:44]Ti10举办地公布
2019/08/25 DOTA
用smtplib和email封装python发送邮件模块类分享
2014/02/17 Python
Python写的创建文件夹自定义函数mkdir()
2014/08/25 Python
python模块之StringIO使用示例
2015/04/08 Python
python实现RSA加密(解密)算法
2016/02/17 Python
python 字典(dict)按键和值排序
2016/06/28 Python
Python 数据结构之旋转链表
2017/02/25 Python
python 寻找list中最大元素对应的索引方法
2018/06/28 Python
python实现ssh及sftp功能(实例代码)
2020/03/16 Python
深入浅析pycharm中 Make available to all projects的含义
2020/09/15 Python
Python更改pip镜像源的方法示例
2020/12/01 Python
matplotlib绘制多子图共享鼠标光标的方法示例
2021/01/08 Python
使用HTML5和CSS3制作一个模态框的示例
2018/03/07 HTML / CSS
留学生如何写好自荐信
2013/12/27 职场文书
安全事故检讨书
2014/01/18 职场文书
Mysql中 unique列插入重复值该怎么解决呢
2021/05/26 MySQL
深入理解Pytorch微调torchvision模型
2021/11/11 Python
php修改word的实例方法
2021/11/17 PHP
关于ObjectUtils.isEmpty() 和 null 的区别
2022/02/28 Java/Android