2019独角兽企业重金招聘Python工程师标准>>>

Ajax是"Asynchronous JavaScript And XML"的缩写(即:异步的JavaScript和XML),是一种实现无页面刷新获取服务器数据的混合技术,Ajax这个概念的最早提出者是Jesse James Garrett。我们知道,互联网最主要的功能在于"资源交换",当初发明互联网的科学家们也是基于这个动机。虽然在互联网中"资源交换"的主体都是计算机。但为了方便交流,我们通常将获取资源的一方称为客户端(主要的工具是浏览器),而将派发资源的一方称为服务端。

在AJAX技术出现之前,如果浏览器需要从服务器请求资源,其交互模式为"客户端发出请求 -> 服务端接收请求并返回相应HTML文档 -> 页面刷新,客户端加载新的HTML文档"。确实,这种交互模式十分简洁明了,而且非常符合人的直觉,对于那时游走于互联网中的极客而言,也确实够用了。但是随着时代的进步,互联网渐渐不只是极客们的娱乐场,越来越多商业化网站的出现,使互联网不再局限于满足人们"资源交换"的需求,人们开始期待能够在互联网中获得更好的"使用体验",而随着用户点击不断刷新页面的交互方式显然很难讨人喜欢。

AJAX技术的问世,不仅通过阻止浏览器接受响应时刷新页面提升了互联网用户的使用体验,还使开发者能够以更加微观的视角重新思考互联网应用的构建,从此,开发者将在"数据"层面而不是"资源"层面以更高的自由 度构建网站和Web应用。

有没有办法在页面数据变动时,只向服务器请求新的数据,并且在阻止页面刷新的情况下,动态的替换页面中展示的数据呢? -- 答案正是"AJAX"。

再试想这样一种情景,当用户点击页面中的某个按钮向服务器发送请求时,页面本质上只是一些数据发生了变化,而此时服务器却要将重绘的整个页面再返回给浏览器加载,这显然有悖于程序员的"DRY"原则,而且明明只是一些数据的变化却迫使服务器要返回整个HTML文档,这本身也会给网络带宽带来不必要的开销。

经典Web应用程序模型的工作方式如下:

用户界面中的大多数用户操作都会将HTTP请求触发返回Web服务器。服务器进行一些处理-检索数据、处理数字、与传统系统对话,然后向客户端返回HTML页面。这种方法具有很多技术意义,但是它并不能为用户带来出色的体验。虽然服务器正在做它应该做的事情,但是在服务器工作时用户只能等待它完成。

图1  传统Web应用与使用AJAX的Web应用

显然,如果我们重新设计Web应用程序,我们就不会让用户等待。我们通过在用户和服务器之间引入中介(Ajax引擎),Ajax应用程序消除了Web上交互的启动-停止-启动-停止性质,浏览器不是加载网页,而是在会话开始时加载一个Ajax引擎-用JavaScript编写。该引擎负责呈现用户看到的界面并代表用户与服务器通信。Ajax引擎允许用户与应用程序的交互异步进行-与服务器的通信无关。因此,用户就不会在盯着空白的浏览器窗口和等待载入的图标或者等待服务器处理结束了。

同步的过程只有允许有一个进程在执行,比如服务端在处理数据的时候,那么客户端不能进行任何操作,处于一个阻塞的一个状态。

使用ajax的程序,服务端在处理数据的时候,客户端浏览器依然可以执行其他的操作,并没有阻塞状态,也就是一个时间段内可以有多个进程在执行。

图2  传统Web应用运行流程

图3  使用AJAX的Web应用运行流程

转载于:https://my.oschina.net/u/4125915/blog/3057589

IT兄弟连 JavaWeb教程 AJAX定义以及解决的问题相关推荐

  1. java web 请求跟踪_IT兄弟连 JavaWeb教程 Servlet会话跟踪 Cookie技术

    原标题:IT兄弟连 JavaWeb教程 Servlet会话跟踪 Cookie技术 Cookie使用HTTPHeader传递数据.Cookie机制定义了两种报头,Set-Cookie报头和Cookie报 ...

  2. IT兄弟连 JavaWeb教程 jQuery对AJAX的支持经典案例

    案例需求:编写用户登陆页面的验证码模块,在用户进行登陆时,输入验证码后不需要点击提交按钮,使用AJAX异步地向服务器发送验证验证码的请求.如果验证码正确,可以点击提交按钮,如果验证码输入错误,提示用户 ...

  3. IT兄弟连 JavaWeb教程 jQuery中其他AJAX支持的函数

    ● $.get()函数 $.get(url,data,function,dataType);参数说明如下: url:请求地址 data:请求参数 dataType:服务器返回的数据类型 functio ...

  4. IT兄弟连 JavaWeb教程 MVC设计模式

    MVC是Model-View-Controller的简称,即模型-视图-控制器.MVC是一种设计模式,它强制性地把应用程序的数据展示.数据处理和流程控制分开.MVC把应用程序分成3个核心模块:模型.视 ...

  5. IT兄弟连 JavaWeb教程 监听器3

    2019独角兽企业重金招聘Python工程师标准>>> 监听域对象中属性变更的监听器 域对象中属性的变更的事件监听器就是用来监听ServletContext.HttpSession. ...

  6. IT兄弟连 JavaWeb教程 使用Servlet实现在页面中显示随机数

    在com.xdl.servlet包下定义RandomServlet类并HttpServlet类,在该类中生成随机数并发送给客户端.RandomServlet类详细代码如下: package com.x ...

  7. IT兄弟连 JavaWeb教程 Servlet线程安全问题

    2019独角兽企业重金招聘Python工程师标准>>> 在Internet中,一个Web应用可能被来自西面八方的客户并发访问(即同时访问),而且有可能这些客户并发访问的是Web应用中 ...

  8. IT兄弟连 JavaWeb教程 JSON和JSON字符串

    2019独角兽企业重金招聘Python工程师标准>>> JSON (JavaScript Object Notation)是JavaScript语言中的一种对象类型.JSON的好处是 ...

  9. IT兄弟连 JavaWeb教程 文件下载技术

    ●  列出提供下载的文件资源 我们要将Web应用系统中的文件资源提供给用户进行下载,首先我们要有一个页面列出上传文件目录下的所有文件,当用户点击文件下载超链接时就进行下载操作,编写一个ListFile ...

最新文章

  1. MIT将AI引入中学课堂,除了设计AI系统,还要学生思考背后的伦理
  2. 《预训练周刊》第24期:Infinite-former:无限记忆变换器、2500万悟道科研基金开始申请
  3. websocket 群/单聊 基础
  4. 在Android Studio中有六种依赖
  5. php对称算法_php里简单的对称加密算法
  6. 如何在 Windows 上安装多个 MySQL,实现 MySQL 跨电脑移植使用
  7. SendMessage函数的常用消息及其应用
  8. jquery在当前页面打印页面div内容实例
  9. JS判断两种格式的输入日期的正确性
  10. linux下怎么创建root,Linux用root账号创建一个新的登录账号的方法
  11. 密码学基础(四):OpenSSL命令详解
  12. 夜间灯光数据dn值_一种基于NDBI的城市夜间灯光数据去饱和方法与流程
  13. python大麦网抢票_抢票攻略-大麦网
  14. web网页设计期末课程大作业:美食餐饮文化主题网站设计——中华美德6页面html css javascript
  15. 暴力破解rar和zip加密压缩包
  16. Python AQI空气污染指数数据分析与机器学习
  17. 人脸识别嵌入式Linux芯片瑞芯微RV1109参数介绍
  18. Python:王老先生有块地
  19. 解决使用JdbcTemplate查询数据产生的异常:EmptyResultDataAccessException: Incorrect result size: expected 1, actual
  20. 戴森空气净化器php00使用,戴森空气净化器使用—戴森空气净化器使用方法

热门文章

  1. python 生成payload_利用Python进行Payload分离免杀
  2. 多生产者_你是生产者还是消费者?这决定了你的层次。
  3. linux 写结构体到文件
  4. [python进阶]11接口:从协议到抽象基类
  5. Git 和 GitHub 教程——版本控制入门
  6. Node.js 可以和 Web 实现 HTTP 请求的跨平台兼容了!
  7. 使用 Solid 私有化存储 IPFS 文件哈希值
  8. Rational Rose 2003 下载、破解及安装方法(图文)
  9. 使用vh来制作高度自适应页面和元素垂直居中
  10. 〖Windows〗Linux的Qt程序源码转换至Windows平台运行,编码的解决