AJAX即“Asynchronous Javascript And XML”(异步JavaScript和XML【Extensible Markup Language】 ),是指一种创建交互式网页应用的网页开发技术。对于传统的数据交互而言,数据都是存储在服务器端,想要请求数据或者提交数据,只能同步实现数据的传输,那么在数据提交或者是数据获取的过程中,用户必须等待信号传递、数据处理、数据打包等过程,无法实现用户在等待过程中也能进行其他操作的体验,这对于浏览器而言并不是一个友好的体验。

  使用AJAX就解决了这个问题,他通过少量数据的传输,获得改变页面少量信息的数据,再通过JS控制页面的局部刷新,使得页面交互过程不必再刷新整个页面,也不用用户等待数据处理完成。由于用户并不关心数据什么时候处理完成,所以AJAX的实现是一个异步的过程。

  总而言之,AJAX的优势就是在于:

  • 使用Javascript向服务器提出请求并处理响应而不阻塞用户!核心对象XMLHTTPRequest。通过这个对象,您的 JavaScript 可在不重载页面的情况与Web服务器交换数据。
  • AJAX 在浏览器与 Web 服务器之间使用异步数据传输(HTTP 请求),这样就可使网页从服务器请求少量的信息,而不是整个页面。

使用原生JS执行流程,主要为以下步骤:

  1. 创建XMLHttpRequest对象(考虑浏览器兼容的问题)
var xhr = function getXmlHttpObject() {
var objXMLHttp = null;
if (window.XMLHttpRequest) {
objXMLHttp = new XMLHttpRequest();
} else if (window.ActiveXObject) {
objXMLHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
return objXMLHttp;
}

2、使用XMLHttpRequest对象打开一个连接(指定连接方式和连接地址以及是否同步),接收三个参数,分别为请求的类型,请求的路径以及指明采用同步还是异步,异步请求为true

xhr.open("POST","URL ",true);

3、建立连接之后,需要发送数据。这时候需要对数据有一个说明,所以需要设置请求的头部(请求的类型和请求的编码格式),请求头的设置只能在open之后,send之前

xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");

4、发送请求,根据请求类型,采用get直接调用send()方法,数据通过url发送大服务器;采用post需要将数据作为方法的参数传递。

xhr.send(data);

5、设置回调函数,当ajax数据传递完成,并且客户端和服务端正常,那么就可以执行ajax完成后的操作。这里是一个事件监听函数,信息在客户端和服务端传递时就会触发该函数,而我们就能在响应完成后的xhr对象上获得服务端返回的数据

ajax状态码(readyState):
0 - (未初始化)还没有调用send()方法
1 - (载入)已调用send()方法,正在发送请求
2 - (载入完成)send()方法执行完成,已经接收到全部响应内容
3 - (交互)正在解析响应内容
4 - (完成)响应内容解析完成,可以在客户端调用了

xhr.onreadystatechange=function(){
//如果readyState为4,表示响应已经被完全接收。
if(xhr.readyState==4){
//如果获得的结果状态代码为200,表示服务端正常返回
if(xhr.status==200){
var txt=xhr.responseText;
document.getElementById("err").innerHTML=txt;
}
}
}

完整代码:

var xhr = getXmlHttpObject();
xhr.open("get", "./users.json", true);
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xhr.send();
xhr.onreadystatechange = function() {
//如果readyState为4,表示响应已经被完全接收。
if (xhr.readyState == 4) {
//如果获得的结果状态代码为200,表示服务端正常返回
if (xhr.status == 200) {
var txt = xhr.responseText;
console.log(txt);
}
}
} function getXmlHttpObject() {
var objXMLHttp = null;
if (window.XMLHttpRequest) {
objXMLHttp = new XMLHttpRequest();
} else if (window.ActiveXObject) {
objXMLHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
return objXMLHttp;
}

ajax基本介绍的更多相关文章

  1. Ajax【介绍、入门、解决Ajax中文、跨域、缓存】

    什么是Ajax Ajax(Asynchronous JavaScript and XML) 异步JavaScript和XML Ajax实际上是下面这几种技术的融合: (1)XHTML和CSS的基于标准 ...

  2. 关于ajax原理介绍

    1.ajax技术的背景 不可否认,ajax技术的流行得益于google的大力推广,正是由于google earth.google suggest以及gmail等对ajax技术的广泛应用,催生了ajax ...

  3. Ajax简单介绍和使用步骤

    Ajax被认为是(Asynchronous(异步) JavaScript And Xml的缩写).现在,允许浏览器与服务器通信而无须刷新当前页面的技术都被叫做Ajax. 同步是指:发送方发出数据后,等 ...

  4. AJAX入门介绍

    在我们平时的开发过程中,经常使用到Ajax数据交互,相信有很大一部分人会使用,可能没太详细了解过Ajax的工作原理.下面我们一起看一下吧! ( 一 ) 什么是Ajax Ajax 即“Asynchron ...

  5. ajax详细介绍

    a.什么是Ajax    Asynchronous JavaScript and XML(异步JavaScript和XML)     节省用户操作,时间,提高用户体验,减少数据请求    传输获取数据 ...

  6. ajax的介绍

    $.ajax({ 11 url: "article.asmx/GetArticleByID", 12 type: "POST", 13 datatype: &q ...

  7. AJax知识介绍

    参考:http://www.runoob.com/ajax/ajax-asp-php.html

  8. AJAX简单介绍

     什么是AJAX Ajax 是 AsynchronousJavaScript and XML(以及 DHTML 等)的缩写. HTML 用于建立 Web表单并确定应用程序其它部分使用的字段. ·J ...

  9. ajax ajax基本介绍

    jquery中ajax方法参数详解 url 要求是string类型参数(默认为当前页面地址) 发送请求的地址 type 要求是string类型的参数,请求方式(post或get)默认为get.注意其他 ...

随机推荐

  1. iOS开发支付集成之微信支付

    这一篇是<iOS开发之支付>这一部分的继支付宝支付集成,银联支付集成第三篇,微信支付.在集成的时候建议都要去下载最新版的SDK,因为我知道的前不久支付宝,银联都更新了一次,微信的不太清楚更 ...

  2. 集群通信组件Tribes之整体介绍

    接下来一系列文章会对集群通信框架tribes进行源码级别的分析,欢迎讨论. 把若干机器组合成一个集群,集群为了能协同工作,成员之间的通信是必不可少的,当然可以说这也是集群实现中重点需要解决的核心问题, ...

  3. 17_Android中Broadcast详解(有序广播,无序广播)最终广播,Bundle传递参数,传递参数的时候指定权限

     1  Broadcast是Android中的四大组件之一,他的用途很大,比如系统的一些广播:电量低.开机.锁屏等一些操作都会发送一个广播. 2  广播被分为两种不同的类型:"普通广播( ...

  4. 开源数字媒体资产管理系统:Razuna

    Razuna以一个使用Java语言编写的开源的数字媒体资产管理(Digital Asset Management)系统.功能很强大,可以用于管理各种格式的数字媒体资源. Razuna在本机的安装配置还 ...

  5. RecyclerView+Cardview学习探索

    1.概述 在support-V7包中引入了很多新的M 控件,其中RccyclerView也是其中一员,它的名字来源于它的工作方式:当一个Item被隐藏起来时候并没有被销毁,当建立新的item时候,组件 ...

  6. C++大小写转换和性能

    p.MsoNormal,li.MsoNormal,div.MsoNormal { margin: 0cm; margin-bottom: .0001pt; text-align: justify; f ...

  7. 【翻译】在Ext JS中创建特定主题的重写

    Ext JS提供了大量的功能来使类的创建和处理变得简单,还提供了一系列的功能来扩展和重新现有的Javascript类.这意味着可以为类添加行为和创建属于自己的类,或者重写某些函数的行为.在本文,将展示 ...

  8. Unix - 文件中构成一个空洞的分析

    lseek函数显示地为一个打开文件设置偏移量,文件偏移量可以大于文件的当前长度,在这种情况下,对该文件的下一次写将加长该文件,并在文件中构成一个空洞,这一点是允许的.位于文件中但没有写过的字节都被读为 ...

  9. Linux文件与目录的默认权限与隐藏权限 - umask, chattr, lsattr, SUID, SGID, SBIT, file

    文件默认权限:umask [root@www ~]# umask 0022 <==与一般权限有关的是后面三个数字! [root@www ~]# umask -S u=rwx,g=rx,o=rx ...

  10. EBS R12安装升级(FRESH)(二)

    3 Linux系统设置 这一节步骤基本都在终端root用户下进行. 自行熟悉vi或其他文本工具的用法. 3.1 host-only外网连接 如果用的NAT模式这一节略过. 右击当前主机连接外网的网卡, ...