服务器与 Ajax

[ 初识 Ajax ] 1999年,微软公司发布 IE5,第一次引入新功能:允许 JS 脚本向服务器发起 HTTP 请求。这个功能当时并没有引起注意,直到 2004 年,Gmail 发布和 2005 年 Google Map 发布,才引起广泛重视。


术语 Ajax 最早产生于 2005 年,指的是围绕上述功能进行开发的一整套做法。帅气的美国大叔 Jesse James Garrett,05 年发表了一篇文章《 A New Approach to Web Applications 》,提出了一个概念:Asynchronous JavaScript and XML( 异步 JavaScript 和 XML,简称 Ajax ),也就是说,用 JavaScript 异步的获取 XML 作为数据交换的格式。从此,Ajax 成为脚本发起 HTTP 通信的代名词,W3C 也在 2006 年发布了它的国际标准。

虽然名字中包含 XML,但 Ajax 通信与数据格式无关。

而且,现在的 Ajax 并不仅仅局限于XML作为数据交换格式,还可以是文本、XML、HTML、JSON等。

[ 前后端数据交互  ]  Ajax 不是像 HTML、JS 或 CSS 这样的一种“正式的”技术,它是表示一些技术的混合交互的一个术语( JS、Web 浏览器和 Web 服务器 ),它使我们可以获取和显示新的内容而不必载入一个新的 Web 页面( 换句话说就是,这一技术能够向服务器请求额外的数据而无需卸载页面 ),会带来更好的用户体验,更有桌面程序的感觉。


[ Ajax 可以做什么? ]

  • 显示新的 HTML 内容而不用载入整个页面
  • 提交一个表单并且立即显示结果
  • 登录而不用跳转到新的页面
  • 星级评定组件
  • 遍历数据库信息加载更多而不刷新页面
  • ...

原生 Ajax 通信流程

[ 原生 API ?!]  Ajax 通过原生的 XMLHttpRequest 对象发出 HTTP 请求,得到服务器返回的数据后,再进行处理。

重点关注 xhr 对象的三个属性:readyState、status、responseText。



Ajax 包括以下几个步骤:1、创建 Ajax 对象;2、发送 HTTP 请求;3、接收服务器返回的数据;Then,更新网页数据。



进阶:jQuery 中的 $.ajax({}) / $.load() 方法

jQuery 提供了一些日常开发中需要的快捷操作,例如 load、ajax、get 和 post 等,使用 jQuery 开发 ajax 将变得极其简单。这样开发人员就可以将程序开发集中在业务和用户体验上,而不需要理会那么繁琐的 XMLHTTPRequest 对象。


[ $.ajax() 方法 ] jQuery 对 Ajax 操作进行了封装,在 jQuery 中:

$.ajax() 是最底层、功能最强大的请求服务器数据的方法;

ajax() 方法不仅可以获取服务器返回的数据,还能向服务器发送器请求并传递数值,其调用格式如下:


load 方法 ] 其作用是从服务器中加载数据,是一个简单但强大的 Ajax 方法。


[1] Ajax 如何加载别的页面(HTML文档)?

[2] 如何加载页面的一部分呢?— 如果url参数的字符串中包含一个或多个空格,那么第一个空格后面的内容,会被当成是jQuery的选择器,从而决定应该加载返回结果中的哪部分内容。

当这种方法执行, 它将检索ajax/test.html返回的页面内容,jQuery会获取ID为container元素的内容,并且插入到ID为result元素,而其他未被检索到的元素将被废弃。


[ 传递方式 ] load()方法默认使用GET方式,如果data参数提供一个对象,那么使用POST方式。


[ 回调函数 ] 如果提供了"complete"回调函数,它将在函数处理完之后,并且HTML已经被插入完时被调用。回调函数会在每个匹配的元素上被调用一次,并且this始终指向当前正在处理的DOM元素。

回调函数有3个参数,分别代表请求返回的内容、请求状态和XMLHTTPRequest对象。


Ajax 跨域