Ajax详述

淺唱寂寞╮ 提交于 2019-11-29 06:04:30

【一】Ajax

1.ajax被认为是异步JS和XML的缩写(Asynchronous JavaScript and XML)。现在,允许浏览器与服务器通信无须刷新当前页面的技术叫做Ajax。

2.WEB传统模型与Ajax模型

  • WEB的传统模型:客户端向服务器发送一个请求,服务器返回整个页面。
  • Ajax的模型是:数据在客户端与服务器之间独立传输。服务器不再返回整个页面。

3.XMLHttpRequest:是创建Ajax的最佳选择,实际上把Ajax当成XMLHttpRequest对象的代名词。

4.Ajax工具包

  1. 服务器端语言:Ajax与服务器端语言无关。
  2. XHTML标准化呈现。
  3. XML描述数据的格式。
  4. DOM实现动态显示和交互。
  5. 使用JS绑定和处理数据
  6. XMLHttpRequest对象进行异步数据的读取

5.Ajax缺陷

  1. 由于JS和Ajax引擎导致的浏览器的兼容
  2. 页面局部刷新,导致后退等功能失效。
  3. 对流媒体的支持没有FLash、Java Applet好
  4. 一些手持设备(如手机、PDA等)支持性差

Ajax工作原理:

【二】发送请求

XMLHttpRequest

利用XMLHttpRequest实例与服务器进行通信包含3个关键部分:
1.onreadystatechange事件处理函数,由服务器触发。服务器会通知客户当前的通信状态。改变readyStatus属性是服务器与客户端连接操作的一种方式。每次readyState属性的改变都会触发readystatechange事件。

2.open(method,url,asynch)方法允许用一个Ajax调用服务器发送请求
3.send()方法

method:请求类型,类似于"GET"或"POST"的字符串。若只想用服务器检索一个文件,为不需要发送任何数据,使用GET;若需要向服务器发送数据,用POST。
url:路径字符串,可以是绝对路径或是相对路径。在某些情况,有些浏览器会把多个XMLHttpRequest请求的结果缓存在同一个url中。如果对每个请求的响应不同,就会带来不好的结果。为了避免浏览器缓存结果,在URL后追加时间戳即可。
asynch:表示请求是否要异步,默认值为true。一般不用这个参数。

 

readyState

0表示未初始化,还没有调用open方法
1表示正在加载,open方法已被调用,但send方法还没有被调用
2表示已加载完毕,send已被调用,请求开始
3表示交互中,服务器正在发送响应
4表示完成,响应发送完毕

【三】返回数据

1.在服务端Ajax是一门与语言无关的技术,从服务端接收数据的时候,那些数据必须以浏览器能够理解的格式发送。服务器端的编程语言只能有三种格式返回数据:
XML----responseXML
JSON----responseText
HTML----responseText
2.小结:

  • 若应用程序不需要与其他的应用程序共享数据的时候,使用HTML片段来返回数据;
  • 如果数据需要重用,JSON文件在性能和文件大小方面有优势;
  • 当远程应用程序未知时,XML文档是首选,因为XML是web服务领域的“世界语”。

【四】补充

JSON比XML更轻巧,是 JS的原生格式。JSON的规则很简单:对象是一个无序的“‘名称/值’”对集合。一个独享以“{”开始,“}”结束。每个名称后跟一个“:”,“‘名称/值’对”之间使用“,”分隔。
举例:将一个字符串转成Json,使用eval(),
eg:
var jsonObject="name:wangerxiao";
var name=eval("("+jsonObject+")");
alert(name);//输出“wangerxiao”
eval()可以把一个字符串转为本地的JS代码来执行

JS与Ajax的区别
1.javascript是一种在客户端执行的脚本语言。ajax是基于javascript的一种技术,它主要用途是提供异步刷新(只刷新页面的一部分,而不是整个页面都刷新)。一个是语言,一个是技术,两者有本质区别.
2.javascript是一种在浏览器端执行的脚本语言,Ajax是一种创建交互式网页应用的开发技术 ,它是利用了一系列相关的技术其中就包括javascript。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!