jQuery的ajax实现原理:

// 1.创建一个XMLHttpRequest对象
var xhr = new XMLHttpRequest(); // 2.打开请求
xhr.open('METHOD', 'URL/TO/SEND', true, null, null); // 3.设置请求头
each(headers, function (key, value) {
xhr.setRequestHeader(key, value);
}); // 4.绑定响应函数
xhr.onreadystatechange = function () {
if (xhr.readyState === 4) {
xhr.onreadystatechange = null; // 6.获取响应状态码
var status = xhr.status === 1223 ? 204 : xhr.status; // 7.获取响应文本
var statusText = xhr.statusText; // 8.获取响应内容(对于现代浏览器,返回的值不是文本的情况下,可能要取xhr.response)
var response = xhr.responseText; //9.处理返回的响应头
var responseHeadersString = xhr.getAllResponseHeaders();
var responseHeaders = {};
var match;
while ((match = /^(.*?):[ \t]*([^\r\n]*)\r?$/g.exec(responseHeadersString))) {
responseHeaders[match[1]] = match[2];
}
// 执行回调函数
complete(status, statusText, response, responseHeaders);
}
}; // 5.发送数据
xhr.send(data);

  

总结:

一共9步骤:

create -> open -> requestHeader -> bind onreadychange -> send -> status -> statusText-> responseHeader -> complete 

最新文章

  1. 给大家分享一个jQuery TAB插件演示
  2. golang——slice使用摘要
  3. Xshell
  4. 序列化和反序列化的几种方式(DataContractSerializer)(二)
  5. Memory Allocation API In Linux Kernel && Linux Userspace、kmalloc vmalloc Difference、Kernel Large Section Memory Allocation
  6. kali linux karmetasploit配置
  7. htmlparser源码简单分析
  8. JavaScript学习笔记--ES6学习(五) 数值的扩展
  9. 平衡二叉树(AVL)java实现
  10. Tcl与Design Compiler (四)——DC启动环境的设置
  11. jpgraph 折线图--解决中文乱码的问题(标题和图例)
  12. PROJ.4学习——初识PROJ
  13. HyperLogLog算法
  14. MagicApp说明
  15. .net mvc数据库操作添加数据的几中方法
  16. MySQL提供了以下三种方法用于获取数据库对象的元数据
  17. 数据库(mysql)
  18. 批处理最完整人性化教程(.bat文件语法)
  19. 如果我写一个开源的HIS软件
  20. IOS中@property的属性weak、nonatomic、strong、readonly等介绍

热门文章

  1. 【转】【Android】ProgressDialog进度条对话框的使用
  2. linux中的线程同步:生产者、消费者问题
  3. asp.net core tags 扩展之 id 和 name
  4. js对象的深浅拷贝
  5. 树形DP【洛谷P3047】 [USACO12FEB]附近的牛Nearby Cows
  6. [比赛|考试]nowcoder 小白月赛7
  7. p2p-如何拯救k8s镜像分发的阿喀琉斯之踵?
  8. springboot整合springtask
  9. php 多语言(UTF-8编码)导出Excel、CSV乱码解决办法之导出UTF-8编码的Excel、CSV
  10. Python文件操作,异常语法