Ajax异步请求原理
一、Ajax能做什么
异步请求、局部刷新
二、同步请求
JavaScript的特点是单线程,也正是因为单线程造成了同步请求
1. 为什么JS是单线程:
JS 作为游览器脚本语言,主要用途是和用户交互、操作 DOM,如果使用多线程,会造成复杂的同步问题,如两个线程同时操作一个 DOM 节点,一个线程在这个节点上添加内容,另一个线程删除了这个节点,应该以哪个线程为准呢?
为了避免复杂性,所以 JS 采用了单线程模式,即使 HTML5 的新标准里面,允许 JS 创建多个线程,子线程也必须受主线程控制,并且不允许操作DOM。
2. 请求流程
客户端直接请求服务端,必须等待服务端响应以后才可执行后续操作
三、异步请求
1. Ajax工作原理
客户端的请求被交给了 Ajax 的代理处理, 由 Ajax 向服务器发送请求, 得到响应结果以后再通过回调函数通知客户端, 这样就使得游览器不再需要等待服务器响应。
2. XMLHttpRequest
XMLHttpRequest一开始只是微软浏览器提供的一个接口,后来各大浏览器纷纷效仿也提供了这个接口,再后来W3C对它进行了标准化,提出了XMLHttpRequest标准。
XMLHttpRequest 对象是AJAX 的核心,也是 Ajax 能实现异步请求的关键:
(1) XMLHttpRequest 对象提供了对 HTTP 协议的完全的访问,包括做出 POST 和 以及 GET 请求的能力。
(2) XMLHttpRequest 可以同步或异步地返回 Web 服务器的响应,并且能够以文本或者一个 DOM 文档的形式返回内容。
Ajax异步请求原理相关推荐
- Ajax异步请求原理和过程
Ajax异步请求原理和过程 1.什么是Ajax 2.AJAX创建异步对象XMLHttpRequest ( 考虑兼容性 ) 3.操作XMLHttpRequest 对象 1.什么是Ajax Ajax是一种 ...
- php原生的异步请求,原生JavaScript实现Ajax异步请求
ajax现在是一种非常流行的技术,现在虽然可以利用JQuery或者一些第三方插件甚至微软提供的一些控件可以方面的实现ajax功能,但是明白其原理也是非常重要的,下面是来使用纯javascript实现获 ...
- ajax异步请求实例
1. 问题分析 用户管理显示页面:usermanagement.tpl(也可以说是MVC中的V,即视图) 用户管理数据发送页面:usermanagement.php(也可以说是MVC中的M,即模型) ...
- JSP同步请求和html+ajax异步请求的两种方式
war包:包括所有的项目资源,只要从浏览器发起的都是属于请求,然后把资源响应给浏览器,解析显示出来. 方式一:HTML+ajax(跳转静态html也是属于请求响应,把整个页面响应给浏览器.) html ...
- ajax异步处理代码实现,原生JS代码实现一个Ajax异步请求
异步加载的方式 (1) defer,只支持IE (2) async: (3) 创建script,插入到DOM中,加载完毕后callBack 实现ajax之前必须要创建一个 XMLHttpRequest ...
- 从浅到深,带你彻底搞懂AJAX异步请求
在平时开发过程中,异步请求似乎比同步请求出现的频率还要高一些.这是为什么呢?在同步请求时如果对网页的部分内容进行更新时,是不是就必须重载整个页面.这样肯定是不行的,这时就可以采用异步请求来解决此问题. ...
- php 返回字符串给aja,解决ajax异步请求返回的是字符串问题
1.返回结果差异 js获取后打印res.code无结果.因为返回数据格式不正确. php文件添加header头: header('Content-Type:application/json;'); 或 ...
- html弹窗赋值给查询框,bootstrap模态框动态赋值, ajax异步请求数据后给id为queryInfo的模态框赋值并弹出模态框(JS)...
/查询单个 function query(id) { $.ajax({ url : "/small/productServlet", async : true, type : &q ...
- Ajax异步请求-简单模版
1 <script type="text/javascript"> 2 window.onload = function () { 3 document.getElem ...
最新文章
- k8s mysql volume_Kubernetes(k8s)中文文档 名词解释 Volumes_Kubernetes中文社区
- 网络编程学习笔记(gethostbyname2函数与IPv6支持)
- Android App开发——使用CameraX打开前后摄像头拍照并保存(Java实现)
- 使用 C++0x 时 make_shared 完美转发构造函数参数的测试编译器
- 嵌入式 linux 启动脚本 编写,[9构建嵌入式linux系统项目-启动脚本的编写.ppt
- KVM虚拟机设置虚拟机的CPU型号与物理机相同
- 第三章 函数 C++语言程序设计第五版 - 郑莉
- c++程序设计语言第四版pdf_寒假攻略 | 开启C语言自学模式
- RabbitMQ消费者流量控制策略总结
- 《tcpip详解》卷一第2章
- Tex中参考文献的引用方法
- 因为计算机丢失user32.dll,电脑丢失USER32.dll怎么处理
- 百度地图 根据经纬度获取 地址
- php情书之笛卡尔的情书,笛卡尔情书的秘密——心形函数的作图
- Brain Tumor Segmentation (BraTS) 脑部肿瘤分割2--二维UNet的复现与数据准备篇
- 冰点文库最新版3210
- 音乐播放时跳动的音符
- 想去阿里大厂去面试测试工程师?想月薪15k?这篇文章一定对你有所帮助
- IBM Power小型机用液晶面板屏查看或设置HMC
- 服务器出错的原因有哪些 原
热门文章
- 终端运行pip提示:LookupError: unknown encoding: cp65001 解决方案
- Folx Pro for Mac(下载工具)免激活版
- 科创板正式开板,新增的这些交易规则,事关你的“钱包”!
- base64解析图片
- 清理完计算机开机屏红,Windows10电脑开机屏幕变成红色的解决方法
- linux 安装rar工具
- 利用梯度下降法实现线性回归--python实现
- 密码*** ,continue,等差求和
- MySQL索引类型(按数据结构分类)
- 在学校玩计算机被发现的检讨书,高中生玩手机被发现检讨书