什么是 ajax

ajax 即“Asynchronous JavaScript and XML”(异步 JavaScript 和 XML),也就是无刷新数据读取。

http 请求

首先需要了解 http 请求的方法(GET 和 POST)。

GET 用于获取数据。GET 是在 URL 中传递数据,它的安全性低,容量低。

POST 用于上传数据。POST 安全性一般,容量几乎无限。

ajax 请求

ajax 请求一般分成 4 个步骤。

1、创建 ajax 对象

在创建对象时,有兼容问题:

  1. var oAjax = new XMLHttpRequest(); //for ie6 以上
  2. var oAjax = new ActiveXObject('Microsoft.XMLHTTP'); //for ie6

合并上面的代码:

  1. var oAjax = null;
  2. if(window.XMLHttpRequest){
  3. oAjax = new XMLHttpRequest();
  4. }else{
  5. oAjax = new ActiveXObject('Microsoft.XMLHTTP');
  6. }

2、连接服务器

在这里会用到 open() 方法。open() 方法有三个参数,第一个参数是连接方法即 GET 和 POST,第二个参数是 URL 即所要读取数据的地址,第三个参数是否异步,它是个布尔值,true 为异步,false 为同步。

  1. oAjax.open('GET', url, true);

3、发送请求

send() 方法。

  1. oAjax.send();

4、接收返回值

onreadystatechange 事件。当请求被发送到服务器时,我们需要执行一些基于响应的任务。每当 readyState 改变时,就会触发 onreadystatechange 事件。

readyState:请求状态,返回的是整数(0-4)。

0(未初始化):还没有调用 open() 方法。

1(载入):已调用 send() 方法,正在发送请求。

2(载入完成):send() 方法完成,已收到全部响应内容。

3(解析):正在解析响应内容。

4(完成):响应内容解析完成,可以在客户端调用。

status:请求结果,返回 200 或者 404。

200 => 成功。

404 => 失败。

responseText:返回内容,即我们所需要读取的数据。需要注意的是:responseText 返回的是字符串。

  1. oAjax.onreadystatechange=function(){
  2. if(oAjax.readyState==4){
  3. if(oAjax.status==200){
  4. fnSucc(oAjax.responseText);
  5. }else{
  6. if(fnFaild){
  7. fnFaild();
  8. }
  9. }
  10. }
  11. };

将以上代码进行封装:

  1. //1.创建对象
  2. var oAjax = null;
  3. if(window.XMLHttpRequest){
  4. oAjax = new XMLHttpRequest();
  5. }else{
  6. oAjax = new ActiveXObject("Microsoft.XMLHTTP");
  7. }
  8. //2.连接服务器
  9. oAjax.open('GET', url, true); //open(方法, url, 是否异步)
  10. //3.发送请求
  11. oAjax.send();
  12. //4.接收返回
  13. oAjax.onreadystatechange = function(){ //OnReadyStateChange事件
  14. if(oAjax.readyState == 4){ //4为完成
  15. if(oAjax.status == 200){ //200为成功
  16. fnSucc(oAjax.responseText)
  17. }else{
  18. if(fnFaild){
  19. fnFaild();
  20. }
  21. }
  22. }
  23. };
  24. }

最后附上实例:

  1. <!DOCTYPE HTML>
  2. <html lang="en-US">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>ajax基础</title>
  6. </head>
  7. <body>
  8. 点击按钮的时候,读取abc.txt<input id="btn" type="button" value="读取"/><br/>
  9. <div id="con"></div>
  10. </body>
  11. </html>
  12. <script type="text/javascript" src="ajax.js"></script>
  13. <script type="text/javascript">
  14. window.onload = function(){
  15. var oBtn = document.getElementById('btn');
  16. var oCon = document.getElementById('con');
  17. oBtn.onclick = function(){
  18. ajax('abc.txt',function(str){
  19. oCon.innerHTML = str;
  20. });
  21. }
  22. }
  23. </script>

abc.txt 内容:

  1. 这是ajax调用的内容1
  2. 这是ajax调用的内容2
  3. 这是ajax调用的内容3

ajax 和xmlHttpRequest区别的更多相关文章

  1. Egret和Http请求 (Ajax、XMLHttpRequest、Post、Get)

    一  Http请求 二  AJax和XMLHttpRequest 三  一个Ajax例子 四 Egret中的egret.HttpRequest 五 Post和Get区别 一 Http请求 Http深入 ...

  2. angular 和jq 的AJAX的请求区别

    最近项目中使用angular,结果发现后台没法获取参数,所以,稍微研究了一下两者在发送ajax时的区别. 注意angular和jquery的ajax请求是不同的. 在jquery中,官方文档解释con ...

  3. AJAX初探,XMLHttpRequest介绍

    AJAX初探,XMLHttpRequest介绍 AJAX      AJAX = Asynchronous JavaScript and XML. 异步的JavaScript和XML.      AJ ...

  4. 普通请求和ajax请求的区别

    普通请求和ajax请求的区别? 下面的action返回一个json文件,文件内容为sts.*,data1

  5. 原生Ajax(XMLHttpRequest)

    一.什么是Ajax: 全称Asynchronous JavaScript and XML: 异步的 JavaScript 和 XML: 可以在不重新加载整个页面的情况下(偷偷发数据),与服务器交换数据 ...

  6. 【js】 ajax 与 axios 区别

    ajax 与 axios区别 Ajax: Ajax 即“Asynchronous Javascript And XML”(异步 JavaScript 和 XML),是指一种创建交互式网页应用的网页开发 ...

  7. AJAX(XMLHttpRequest)进行跨域请求方法详解

    AJAX(XMLHttpRequest)进行跨域请求方法详解(三) 2010年01月11日 08:48:00 阅读数:24213 注意:以下代码请在Firefox 3.5.Chrome 3.0.Saf ...

  8. Jquery ajax, Axios, Fetch区别

    1.   Jquery ajax, Axios, Fetch区别之我见 2.   ajax.axios.fetch之间的详细区别以及优缺点

  9. 原生ajax、XMLHttpRequest和FetchAPI简单描述

    什么是ajax ajax的出现,刚好解决了传统方法的缺陷.AJAX 是一种用于创建快速动态网页的技术.通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新.这意味着可以在不重新加载整个 ...

随机推荐

  1. /lib/ld-linux.so.2: bad ELF interpreter: No such file or directory 错误:

    在安装tomcat时报了错: /lib/ld-linux.so.2: bad ELF interpreter: No such file or directory 本机环境: [root@AY1405 ...

  2. OpenStack网络介绍

    OpenStack网络介绍     OpenStack里面的网络相对复杂.经常有人对几个网络概念搞混淆.因此,本文对OpenStack里面的Provider network 和 Tenant netw ...

  3. MyBatis JdbcType 与Oracle、MySql数据类型对应关系详解

    本文转自:http://blog.csdn.net/loongshawn/article/details/50496460 1. Mybatis JdbcType与Oracle.MySql数据类型对应 ...

  4. 简单的java实验,涉及到 类继承以及接口问题,方法体的重写(区别于重载)

    package test ; abstract class Animal { abstract void cry(); abstract String getAnimalName(); } class ...

  5. 【LeetCode】27. Remove Element (2 solutions)

    Remove Element Given an array and a value, remove all instances of that value in place and return th ...

  6. linux常见面试题及答案

    1. 在Linux系统中,以文件方式访问设备. 2. Linux内核引导时,从文件/etc/fstab中读取要加载的文件系统. 3. Linux文件系统中每个文件用i字节来标识. 4. 全部磁盘块由四 ...

  7. Oracle截取字符串函数和查找字符串函数,连接运算符||

    参考资料:Oracle截取字符串和查找字符串 oracle自定义函数学习和连接运算符(||) oracle 截取字符(substr),检索字符位置(instr) case when then else ...

  8. Android开发之Button事件实现方法的总结

    下面介绍Button事件实现的两种方法 main.xml <?xml version="1.0" encoding="utf-8"?> <Li ...

  9. linux服务器的Gzip文件压缩方法[转]

    一.gzip介绍 gzip是GNU zip的缩写,它是一个GNU自由软件的文件压缩程序,也经常用来表示gzip这种文件格式.软件的作者是Jean-loup Gailly和Mark Adler.1992 ...

  10. hello oc

    printf("Hello C\n"); //OC可以采用C语言的输出方式 printf("The number is %d\n",100);//%d 输出数字 ...