ajax原理总结,关于Ajax技术原理的3点总结

2023-10-27

ajax:Asynchronous Javascript and XML   异步Javascript 和XML。

是一种创建交互式网页应用的网页开发技术。

1.0 优势:

1.1 通过异步模式,提升了用户体验。

1.2 优化了浏览器与服务器之间的传输,减少了不必要的数据往返,减少了带宽占用。

1.3 Ajax引擎在客户端运行,承担了一部分本来由服务器承担的共组,从而减少了大用户量下的服务器负载。

2.0 工作原理

Ajax核心是Javascript对象XmlHttpRequest。该对象在 IE5中首次引用,它是一种支持异步请求的技术。XmlHttpRequest使您可以使用Javascript向服务器提出请求并处理响应,而不是阻塞用户,达到无刷新的效果。

由于浏览器之间存在差异,创建XmlHttpRequest对象的方式也有差异(主要是IE和其他浏览器之间的差异)。

2.1 比较通用型的创建异步请求的方法:

function CreateXmlHttp() {

//非IE浏览器创建XmlHttpRequest对象的方法

if (window.XmlHttpRequest) {

xmlhttp = new XmlHttpRequest();

}

//IE浏览器创建XmlHttpRequest对象的方法

if (window.ActiveXObject) {

try {

xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");

}

catch (e) {

try {

xmlhttp = new ActiveXObject("msxml2.XMLHTTP");

}

catch (ex)

{ }

}

}

}

2.2 XmlHttpRequest相关属性:

onreadystatechange      每次状态改变所触发事件的事件处理程序。

responseText               从服务器进程返回数据的字符串形式。

responseXML                从服务器进程返回的DOM兼容的文档数据对象。

status                         从服务器返回的数字代码,比如常见的404(未找到)和200(已就绪)

status Text                  伴随状态码的字符串信息

readyState                   对象状态值

0 (未初始化) 对象已建立,但是尚未初始化(尚未调用open方法)

1 (初始化) 对象已建立,尚未调用send方法

2 (发送数据) send方法已调用,但是当前的状态及http头未知

3 (数据传送中) 已接收部分数据,因为响应及http头不全,这时通过responseBody和responseText获取部分数据会出现错误,

4 (完成) 数据接收完毕,此时可以通过通过responseXml和responseText获取完整的回应数据

2.3 简单的Demo示例:

function SendAsyncRequest() {

var data = document.getElementById("XXId").value;

CreateXmlHttp();  //创建XmlHttpRequest对象

if (!xmlhttp) {         //判断对象是否创建成功

alert("创建xmlhttp对象异常!");

return false;

}

xmlhttp.open("POST", url, false);   //开始发送异步请求

xmlhttp.onreadystatechange = function () {

if (xmlhttp.readyState == 4 && xmlhttp.status == 200 ) {

document.getElementById("XXShowId").innerHTML = xmlhttp.ResponseText;   //数据接收完毕

}

}

xmlhttp.send();

}

3.0 缺点:

1.破坏了浏览器后退按钮的正常行为,动态更新页面后,无法回到前一个页面的状态。

2.使用Javascript作为Ajax的基础引擎,Javascript的兼容性并不是很好。(当然现在流行的Jquery等javascript类库大大改善了这些问题,对Ajax的调用也方便了很多,本文只是简述了Ajax的基本实现原理)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ajax原理总结,关于Ajax技术原理的3点总结 的相关文章

  • Android TextView文字过长将后面View挤出屏幕解决方案

    前言 需求 横排两个 TextView 第一个 TextView 宽度自适应 第二个 TextView 宽度固定且跟随在 TextView 后面 第二个View可为任意View 宽度需已知 需要第一个View margin出相应宽度给第二个
  • 【写一个操作系统】3—汇编语言学习及Makefile入门

    目录 汇编代码 制作启动区程序 Makefile 今天的主要任务是通过对helloos nas核心代码汇的理解进行编语言的学习 还有就是Makefile的学习 汇编代码 主要是对上次的汇编文件helloos nas核心部分的学习 核心部分的
  • 服务器修改tomcat日志级别,远程 服务器tomcat日志监控

    远程 服务器tomcat日志监控 内容精选 换一换 MRS集群的日志保存路径为 var log Bigdata 日志分类见下表 MRS日志目录清单见下表 启用多实例功能后 如果系统管理员添加了多个HBase Hive和Spark服务的实例
  • PDManer数据库建模工具介绍

    pdmaner PDManer元数建模 是一款多操作系统开源免费的桌面版关系数据库模型建模工具 相对于PowerDesigner 他具备界面简洁美观 操作简单 上手容易等特点 支持Windows Mac Linux等操作系统 也能够支持国产
  • 寻找数列(构造+拓扑)

    寻找一个有n个整数的数列 满足下列条件 其中任意连续p个数之和是正数 其中任意连续q个数之和是负数 若无法找到 则输出 No 否则输出一个数值最小的数列 输入 n p q 输出 n个整数 样例 输入 5 4 3 输出 2 2 5 2 2 设
  • 通过BAT脚本批量修改文件名

    通过BAT脚本批量修改文件名 一 生成命名文件名列表 二 在excel中对应的行输入修改后的文件名 在这里插入图片描述 https img blog csdnimg cn 20201012102112886 png x oss proces
  • 这几天心里颇不宁静,采的不是信号,而是寂寞

    原文来自微信公众号 工程师看海 这几天心里颇不宁静 今晚在院子里坐着乘凉 忽然想起往日一同攻坚的战友 在这满月的光里 该是另一番样子吧 我们制定的uV级别信号的采集方案 从原理到模拟环境测试 一切都OK 然而真正到现场采集信号时却发现 压根
  • python获取时间日期列表集合

    python获取时间日期列表集合 以前过去以后未来 安装datedays pip install datedays import datedays if name main print 测试时间 datedays getnow print
  • python-获取当前目录/上级目录/上上级目录...

    获取文件 在其他人使用你的代码时 常常因为目录层级的问题为无法运行程序 所以在引起其他模块文件时 尽量采取绝对路径的方式导 python官方建议尽量的使用绝对目录 而不是相对目录 获取当前文件的绝对路径 os path abspath fi
  • 公式微分后,为什么是偏导的相加

    二郎在研究一个公式中 会涉及分析变量对最终结果产生影响时 注 最终结果 这里确实是最后需要获得的结果 数学公式一定要和物理对应 输入放在一边 输出放在一边 否则都放在一边 就全成自变量了 变量对最终结果影响 既然涉及了分析 那么我们就先说为
  • c++中分文件编写

    c 中分文件编写 本文内容来自某视频教程 分文件格式编写格式 h中写类的成员函数声明 cpp中写成员函数实现 代码案例 所有代码写在一个文件中 如下是一段没有分文件编写的代码 即将所有代码写在一个源文件中 如图所示 以下代码实现了利用全局函
  • nginx转发wss

    做了一个tp6 swoole的项目 没找到swoole开启ssl的资料 想起以前做过转发可以实现 就新建了一个站 然后转发到swoole的端口 也能实现wss的访问 下面是配置文件 upstream wss server 127 0 0 1
  • ERP、SCM、CRM的区别和联系?

    ERP 企业资源计划 SCM 供应链管理系统 CRM 客户关系管理 是当前企业信息系统三大热门话题 无论是ERP SCM 还是CRM其根本目标都在于提高企业管理水平 提高企业核心竞争力 本文怡海软件将分别从其含义 区别 联系 集成方面进行简
  • Unity Scroll View踩坑记录

    Unity要想实现游戏中的背包滑动效果 最简单的方法就是使用ScrollView这个组件 这个组件可以实现拖动滑动的效果 如上图所示 我希望将这些Item实现背包的排版效果 第一步 现将所有的Item移到Content下 此时我们会发现部分
  • Java集合——Java8之HashMap

    一 前言 在分析jdk1 8后的HashMap源码时 发现网上好多分析都是基于之前的jdk 而Java8的HashMap对之前做了较大的优化 其中最重要的一个优化就是桶中的元素不再唯一按照链表组合 也可以使用红黑树进行存储 总之 目标只有一
  • Python爬取某短视频热点

    随着短视频的大火 不仅可以给人们带来娱乐 还有热点新闻时事以及各种知识 刷短视频也逐渐成为了日常生活的一部分 本 文以一个简单的小例子 简述如何通过Pyhton依托Selenium来爬取短视频 仅供学习分享使用 如有不足之处 还请指正 涉及
  • pyspark环境安装历史难题终于解决

    path JAVA HOME里面的D JAVA 1 jdk1 8 0 152 bin一定要全并且对应上 踩坑记录 已解决 报错 WARN ProcfsMetricsGetter Exception when trying to comput
  • 基于Java的OA系统的设计与实现

    源码及论文下载 http www byamd xyz tag java 摘 要 学习和研究办公自动化中涉及到的知识和技术是实现办公自动化系统的前提条件 通过学习研究 掌握了其中的关键技术之后 结合自身的理解 对其做出了相应的表述 同时也成功
  • 【第03例】IPD体系进阶

    目录 前言 专栏目录 具体内容 IPD 相关专栏推荐 专栏列表 作者简介 前言 今天继续来讲讲 IPD 中涉及的几个评审点 ADCP 是英文 Av

随机推荐

  • 彻底理解coookie、session、token

    一 发展史 1 很久很久以前 web基本上就是文档的浏览而已 既然是浏览 作为服务器 不需要记录谁在某一段时间里都浏览了什么文档 每次请求都是一个新的HTTP协议 就是请求加响应 尤其是我不用记住是谁刚刚发了HTTP请求 每个请求对我来说都
  • Linux下的Oracle连接

    1 进入Oracle su oracle 2 开启监听器 oracle localhost root lsnrctl status oracle localhost root lsnrctl start oracle localhost r
  • 微信小程序自定义 tab-bar(基于 wepy)

    背景 微信小程序提供的原生 tab bar 功能简单 样式单一 无法满足业务需求 项目中使用的是 wepy 1 x 框架 实现原理与原生类似 方案 一 使用组件 在每个Tab页引入 修改全局配置 app wpy export default
  • CloudCompare--安装和简单的使用方法

    CloudCompare 安装和简单的使用方法 CloudCompare工具是一个非常好的处理点云数据的开源工具 有个不错的框架 很多公司对该工具进行二次开发以满足公司需要 第一次使用CloudCompare感觉非常好用 有兴趣的可以多了解
  • C语言进阶知识点(持续跟新)

    还是有点儿进阶的知识点 1 大段 小段内存模型 int val 0x12345678 int p1 val char p2 char p1 printf x n p2 p2 printf x n p2 short p3 val printf
  • windows server 2012 双网卡配置

    别用route 命令 在使用最新版的windows server 2012的时候 当存在两个或者多个网段的时候 就可以采用双网卡的方式来添加和配置路由 具体的设置方法如下 网段1 192 168 0 0 网段2 192 168 1 0 20
  • Go的 context 包的使用

    文章目录 背景 简介 主要方法 获得顶级上下文 当前协程上下文的操作 创建下级协程的Context 场景示例 背景 在父子协程协作过程中 父协程需要给子协程传递信息 子协程依据父协程传递的信息来决定自己的操作 这种需求下可以使用 conte
  • 337. House Robber III

    The thief has found himself a new place for his thievery again There is only one entrance to this area called the root B
  • 我们来浅谈代码语言的魅力

    01 浅谈 V8 Hidden Classes 和 Inline Caches Javascript 是动态的 基于属性链的语言 V8 是流行的 JavaScript 运行引擎 我们知道在运行时可以改变对象的属性和类型 为了定位对象的属性和
  • pb使用记录 关于pbt、pbr、pbd

    pb使用记录 关于pbl pbt pbr pbd 最近使用pb修改程序 遇到一些基础问题 之前有过了解但是几年没有碰过PB有些忘了 简单记录一下 1 关于pbl pbt pbr pbd pbt powerbuilder target 是8以
  • Java代码的静态编译和动态编译中的问题比较(1)

    Java 应用程序的性能经常成为开发社区中的讨论热点 因为该语言的设计初衷是使用解释的方式支持应用程序的可移植性目标 早期 Java 运行时所提供的性能级别远低于 C 和 C 之类的编译语言 尽管这些语言可以提供更高的性能 但是生成的代码只
  • 一篇文章带你了解JavaScript中的变量,作用域和内存问题

    作者 Jeskson 来源 达达前端小酒馆 1 在JavaScript中的变量分别区分为两种 一种为基本类型值 一种为引用类型值 基本类型值指的是简单的数据段 引用类型值为可能由多个值组成的对象 引用类型的值是保存在内存中的对象 JavaS
  • maven install的时候报Unable to find main class

    目录 问题描述 解决办法 解决方案一 添加一个主函数 解决方案二 将不是web工程的设置跳过 解决方案三 打包插件的作用本质上就是将当前项目所依赖的jar打包到一块 这样jar包就可以运行了 我们完全可以把parent的pom xml的bu
  • tauri使用github进行打包和自动更新教程

    之前的几篇文章介绍了tauri的基本安装 本地打包等方法 本文将接着就前几篇文章进行继续阐述 着重介绍tauri介绍tauri以github为后台服务进行打包 更新 以及tauri配置启动图 一 tauri使用github进行打包 1 首先
  • 学编程买什么电脑最好?

    补充下背景 在编程界 编程设备 电脑 有两个世界 一个是普通世界 这个世界里 程序员写代码的电脑和大众玩游戏看电影上网做ppt的电脑一样 就是你手头的普通电脑 什么电脑都行 另一个世界 是专业世界 是非windows行业的专业 高端 杨村白
  • C++ 学习(11)类和对象、封装、访问权限、成员属性私有性、构造函数与析构函数

    面向对象的特点 封装 继承 多态 万事万物皆为对象 对象上有其属性和行为 方法 1 封装 将属性与行为作为一个整体 表现生活中的事物 将属性和行为加以权限控制 public private等 C 封装 语法 class 类名 访问权限 属性
  • MBIST --- PATR1.Memorybist测试原理

    mem bist作为现在design设计中不可或缺的DFT设计内容 越发重要 本章节主要介绍mem bist组成部分 测试的原理以及注意事项 1 mem bist implementation 1 1 如下图所示为最basic的mbist
  • LeetCode 1476. 子矩形查询

    请你实现一个类 SubrectangleQueries 它的构造函数的参数是一个 rows x cols 的矩形 这里用整数矩阵表示 并支持以下两种操作 updateSubrectangle int row1 int col1 int ro
  • 利用randlanet训练示例semantic3D数据并将预测结果可视化

    1 深度学习环境配置 安装ubuntu 18 安装显卡驱动 cuda cuDNN 安装anaconda 安装tensorflow gpu包 下载randlanet 2 训练semantic3D数据并预测 2 1下载数据 进入RandLA N
  • ajax原理总结,关于Ajax技术原理的3点总结

    ajax Asynchronous Javascript and XML 异步Javascript 和XML 是一种创建交互式网页应用的网页开发技术 1 0 优势 1 1 通过异步模式 提升了用户体验 1 2 优化了浏览器与服务器之间的传输