手动实现AJAX
Ajax
描述
Ajax在浏览器是通过XMLHttpRequest对象来实现数据传输的。
XMLHttpRequest对象进行HTTP请求前必须通过open初始化,open接受五个参数,分别为请求方法、请求链接、异步标识、账号和密码用以服务端验证。
open(Method, URL, Asynchronous, UserName, Password)
在成功初始化请求之后,XMLHttpRequest对象的setRequestHeader方法可以用来设置请求头。
setRequestHeader(key,value)
调用open()方法后,就可以通过调用send()方法按照open方法设定的参数将请求进行发送。
send(Data)
当open方法设定发送的方式为异步请求时,onreadystatechange事件监听器将自动在XMLHttpRequest对象的readyState属性改变时被触发。
switch(readyState){
    case 1: break; //当open方法被成功调用,readyState为1
    case 2: break; //当send方法被调用,readyState属性被置为2
    case 3: break; //HTTP响应内容开始加载,readyState属性被置为3
    case 4: break; //HTTP响应内容结束加载,readyState属性被置为4
}
如果XMLHttpRequest对象的readyState属性还没有变成4,abort可以终止请求。这个方法可以确保异步请求中的回调不被执行。
abort()
ajax的简单实现
由于浏览器的同源策略(协议、url、端口号任一不同都算为跨域请求),于是此代码需要打开百度的首页,在开发者工具的Console直接执行,在Network查看效果。
    function ajax(url,method="GET",data=null,async=true) {
        // 声明XMLHttpRequest //在IE5和IE6中需要使用ActiveX对象
        var XHR = XMLHttpRequest;
        // 创建XMLHttqRequest
        XHR = new XMLHttpRequest()
        // 设置请求状态改变时执行的函数
        XHR.onreadystatechange = function() {
            if (XHR.readyState === 4 ) console.log(`响应状态:${XHR.status}`,"FINISH") //XHR.responseText为响应体
         }
         // 初始化请求参数
         XHR.open(method,url,async)
         // 发起请求
         XHR.send(data)
    }
    ajax("https://www.baidu.com");
    ajax("https://www.baidu.com","POST","A=1&B=2");
每日一题
https://github.com/WindrunnerMax/EveryDay
手动实现AJAX的更多相关文章
- 手动封装AJAX
		正常函数的调用 <!DOCTYPE html> <html lang="en"> <head> <meta charset="U ... 
- jQuery Mobile 手动显示ajax加载器,提示加载中...
		在使用jQuery Mobile开发时,有时候我们需要在请求ajax期间,显示加载提示框(例如:一个旋转图片+一个提示:加载中...).这个时候,我们可以手动显示jQuery Mobile的加载器,大 ... 
- 使用promise手动封装ajax函数
		最近在做一个单页应用,node和浏览器仅通过json传输数据,因为是只有自己用等于是锻炼一下自己,所以也不用考虑seo的问题,node端我已经写好了,但是浏览器端想要用ajax原生太麻烦,用封装的函数 ... 
- 手动(原生ajax)和自动发送ajax请求 伪ajax(Ifrname)
		自动发送 ---> 依赖jQuery文件 实例-->GET请求: function AjaxSubmit() { $.ajax({ url:'/data', type:"GET ... 
- jQuery Mobile 手动显示ajax加载器
		在jquery mobile开发中,经常需要调用ajax方法,异步获取数据,如果异步获取数据方法由于网速等等的原因,会有一个反应时间,如果能在点击按钮后数据处理期间,给一个正在加载的提示,客户体验会更 ... 
- ajax基础学习
		AJAX即"Asynchronous JavaScript and XML",意思是异步JavaScript和XML,是指一种创建交互式网页的网页开发技术. 虽然现在很少有人去自己 ... 
- 快速理解-Ajax
		AJAX即“Asynchronous JavaScript and XML”,意思是异步JavaScript和XML,是指一种创建交互式网页的网页开发技术. 虽然现在很少有人去自己手动写AJAX,大多 ... 
- 讲解HTML服务器推送相关技术知识(转)
		1. 为什么需要服务器推送? 最大的优点:实时 健康知识平台重庆男科医院 重庆妇科医院适用场景:实时股票价格.商品价格.实时新闻.Twitter/weibo timeline.基于浏览器的聊天系统 2 ... 
- Webpack+Vue+ES6 前端组件化开发mobile-multi-page应用实战总结
		本文版权归博客园和作者吴双本人共同所有 转载和爬虫请注明原文地址 www.cnblogs.com/tdws 一.写在前面 项目上线有一段时间了,一个基于webpack+vue+ES6的手机端多页面应用 ... 
随机推荐
- Starting php-fpm [18-Jun-2019 12:56:59] NOTICE: PHP message: PHP Warning:  Version warning提示报错解决
			php-fpm在命令行重启时出现如下提示信息在终端上,虽然不影响使用,但是不够干净利落,参考了一篇国外博客得以解决,参考链接:https://community.centminmod.com/thre ... 
- 5G-NR物理信道与调制-下行链路v1.1.0
			上接<5G-NR物理信道与调制v1.1.0>下行链路 References Definitions, symbols and abbreviations 帧结构与物理资源 通用函数 上行链 ... 
- 安卓权威编程指南-笔记(第21章 XML drawable)
			在Andorid的世界里,凡事要在屏幕上绘制的东西都可以叫drawable,比如抽象图形,Drawable的子类,位图图形等,我们之前用来封装图片的BitmapDrawable就是一种drawable ... 
- 一文看懂Java序列化
			一文看懂Java序列化 简介 Java实现 Serializable 最基本情况 类的成员为引用 同一对象多次序列化 子父类引用序列化 可自定义的可序列化 Externalizable:强制自定义序列 ... 
- iOS 开发富文本之TTTAttributedLabel 在某个特定位置的文字添加跳转,下划线,修改字体大小,颜色
			@property(nonatomic , strong) TTTAttributedLabel * ttLabel; @property(nonatomic , strong) NSRange li ... 
- css实战#用css画一个中国结
			大家好!今天跟大家分享一个用 css 画中国结的教程.最终效果如下: 大家如果感兴趣可以参考我的源码:gitHub地址 首先,我们定义好画中国结需要的结构: <div class="k ... 
- proxyTable的配置
			在dev环境下面: proxyTable: { '/api': { target: 'http://api.douban.com/v2', //主域名,以前我都写192.168.2.57:80,这里跨 ... 
- LeetCode 33.Search in Rotated Sorted Array(M)
			题目: Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand. ( ... 
- Nginx server name配置子域名二级域名
			绑定子域名到不同目录(子站) 网站的目录结构为 /var/www/html: ├── fx └── blog└── photo html为nginx的默认网站目录. sudo vi /etc/ngin ... 
- python入门到放弃-基本数据类型之tuple元组
			#概述 元组俗称不可变的列表,又称只读列表,是python的基本数据类型之一, 用()小括号表示,里面使用,逗号隔开 元组里面可以放任何的数据类型的数据,查询可以,循环可以,但是就是不能修改 #先来看 ... 
