记得刚入行的时候,看到ajax,即异步的javascript和xml这样一个概念,一点感觉都没有。参加工作前的第一轮面试,被问到有没有自己实现过ajax,我觉得自己实现肯定很复杂吧。

  • 从名字理解

  从名字说起,“异步的javascript和xml”,其中javascript是一种流行于前端页面的语言,它可以操作html页面的各种元素,让静止的页面(静态页面)动起来(动态页面);而xml,一种树形数据格式,用来传输数据用的。就这样,最有迷惑的是异步的,什么叫做异步的?举个生活中的栗子。你本来和小明约好放学一起回家的,结果半路小明被小红叫去修灯泡了,于是你就不等小明,自己回家了。不一起走了,这就是异步。这时候小明就是ajax,他去小红家修灯泡,就好比ajax向后台发起请求,虽然他得等到修完灯泡才能回家,当然他也可以选择不回家,而这对你没影响,你就好比是页面的其他部分,还是该干嘛干嘛。

  • 从效果理解

  ajax的出现最初只为一个目的——页面的局部刷新(整体页面不动,局部变动)。如何做到的?页面向服务器发起一个请求,然后接收到服务器返回的数据并将数据渲染到当前页面,如此而已。动态渲染,这不就是JS最擅长的吗。发送请求和获取数据用到的是JS的XMLHttpRequest对象。所以说,ajax,就是给一段javascript代码起了个名字。

  • 从核心理解

  要理解ajax,不得不介绍XMLHttpRequest对象,是因为XMLHttpRequest是ajax的核心,也是几乎是ajax的全部。弄懂了XMLHttpRequest,就明白了ajax。什么是XMLHttpRequest对象?

  1.XMLHttpRequest 对象用于在后台与服务器交换数据。2.所有现代的浏览器都支持 XMLHttpRequest 对象。

  方法:

  open(method,url,async)     规定请求的类型(GET/POST)、URL 以及是否异步处理请求。

  send()                              将请求发送到服务器

  属性:

  responseText                     获得字符串形式的响应数据。

  readyState                        存有 XMLHttpRequest 的状态。从 0 到 4 发生变化。(0: 请求未初始化 1: 服务器连接已建立 2: 请求已接收 3: 请求处理中 4: 请求已完成,且响应已就绪)

  status                               响应状态码(常见的如:200代表请求成功,404代表未找到页面)

  onreadystatechange           存储函数(或函数名),每当 readyState 属性改变时,就会调用该函数。

  • 从源码理解(XMLHttpRequest对象的使用)

  ----------------------------创建XMLHttpRequest对象-----------------------------------------

  var xmlhttp;

  if (window.XMLHttpRequest) {//  IE7+, Firefox, Chrome, Opera, Safari

    xmlhttp = new XMLHttpRequest();

  } else {// code for IE6, IE5

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

  }

  ----------------------------定义成功接收数据后进行的操作,渲染页面--------------------------------------------------
   xmlhttp.onreadystatechange = function() {

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

      alert(xmlhttp.responseText);

    }

  }

  -----------------------------设置XMLHttpRequest参数并发送请求-----------------------------------------

  xmlhttp.open("GET",url,true);

  xmlhttp.send();

  ajax核心代码短短十三行搞定。

ajax只是一个称呼的更多相关文章

  1. 一点关于Ajax和一个等待图标的显示

    一点关于Ajax和一个等待图标的显示 1.首先Ajax是asynchronous Java-Script and XML的简写.翻译过来就是异步的JS和XML. 2它的优点就是能不更新页面的情况下,得 ...

  2. struts2学习笔记--使用servletAPI实现ajax的一个小Demo

    这个例子是点击网页上的一个button,然后调用action,使用response项前台打印"哎呦 不错哦",当然是以异步形式实现. jsp页面: <head> < ...

  3. Nodejs 之Ajax的一个实例(sql单条件查询&并显示在Browser端界面上)

    1.Broswer端的Ajax <!DOCTYPE html> <html> <head lang="en"> <meta charset ...

  4. 原生Ajax用法——一个简单的实例

    Ajax全名(Asynchronous(异步) JavaScript and XML )是可以实现局部刷新的 在讲AJax之前我们先用简单的实例说一下同步和异步这个概念 /*异步的概念(就是当领导有一 ...

  5. Ajax的一个实例及代码

    这是用ajax做的一个小小的应用!当选择menu1的时候,会出来menu里面所有的内容.同理对于menu2.多的不说,代码如下: 首先是inner.html文件 <html><hea ...

  6. 用php和ajax写一个省市区的三级联动,实现地区的下拉选择

    要实现这个页面的三级联动,我们需要建立三个php文件,第一个php文件我们导入jQuery文件,里面嵌入JavaScript:第二个php文件我们做一个php的处理页面,里面引入我们封装好的数据库类文 ...

  7. $.ajax里一个中文全角逗号引发的惨案

    昨天,在制作一个页面时,突然发生一件不可思议的事情--JS失效了! 确实让人匪夷所思,我记得饭前还是正常运作的. 于是慢慢的缩小范围,把下午刚加的语句删掉,删完了页面就正常了. 于是被删除的这部分代码 ...

  8. AJAX - 实现一个简单的登录验证

    /**Ajax 编写流程 * 1.创建 XHR (XMLHttpRequest)对象 var xmlHttpReq = false; // var xmlHttpReq = ""; ...

  9. 使用html,JavaScript,ajax写一个小型实例

    //1.创建受捐单位数组 var arrOrgData = [     { "Id": 1, "OrgName": "红十字会" },    ...

随机推荐

  1. windows下mysql 控制台操作

    windows mysql 控制台操作 1.首先打开cmd进入dos窗口 2.切换至目录: F: cd PHPnow-1.5.6\MySQL-5.0.90\bin 3.进入mysql: mysql - ...

  2. C语言宏与单井号(#)和双井号(##)

    C(和C++)中的宏(Macro)属于编译器预处理的范畴,属于编译期概念(而非运行期概念).下面对常遇到的宏的使用问题做了简单总结.关于#和##在C语言的宏中,#的功能是将其后面的宏参数进行字符串化操 ...

  3. java-mina(nio 框架)

    mina是对nio的具体实现.是目前比较高效和流行的nio框架了. 下面是对使用mina进行通讯的一个简单demo,后面再用mina写一个RPC的简单框架.   mina主要包括: (使用的mina版 ...

  4. dp hdu-4433 locker

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4433 题目大意: 给两个长度相等的数字串s1,s2.每次操作可以把连续的最多三位都+1或-1,如果超 ...

  5. Datediff函数 助你实现不同进制时间之间的运算

    在VB开发环境中实现时间之间的加减运算有很多种方法,前不久自己无意中发现了Datediff函数,它能够比较简单.全面地实现我们比较常用的时间之间的运算,今由自己的研究,搞清了它的一些用法,拿来和大家分 ...

  6. PHP学习笔记-00

    PHP这门语言的就不用多说啦,使用率非常高的一门后端开发语言.之前一直希望可以学习了解一下PHP.之前主要在做Java和OC这类语言的开发,对于PHP这种脚本语言(动态语言)还是了解甚少. 近期看了一 ...

  7. 用CRTP在C++中实现静态函数的多态

    我上一篇博客[C++的静态分发(CRTP)和动态分发(虚函数多态)的比较](http://www.cnblogs.com/fresky/p/3504241.html)介绍了如何用CRTP(Curiou ...

  8. 搭建Struts框架

    搭建Struts框架 新建项目 [file]-[new]-[web project] 在弹出的对话框中对项目进行命名,点击[finish] 新建项目-> 点击项目右键-> MyEclips ...

  9. 详解Android动画之Frame Animation

    在开始实例讲解之前,先引用官方文档中的一段话: Frame动画是一系列图片按照一定的顺序展示的过程,和放电影的机制很相似,我们称为逐帧动画.Frame动画可以被定义在XML文件中,也可以完全编码实现. ...

  10. Cocopods -第三方库的管理

    前言 什么是CocoaPods? CocoaPods是OS X和iOS下的一个第三类库管理工具,通过CocoaPods工具我们可以为项目添加被称为“Pods”的依赖库(这些类库必须是CocoaPods ...