一、ajax简介

AJAX即“Asynchronous Javascript And XML”(异步JavaScript和XML),AJAX 是一种与服务器交换数据的技术,他可以在不更新整个页面的情况下局部更新页面中的某一部分。

关于同步异步:

异步:程序一起执行
同步:程序上一个执行完下一个才执行

如果是异步通信方式(true),客户机就不需要等待服务器的响应;如果是同步方式(false),客户机就要等到服务器返回消息后才去执行其他操作。这也是ajax可以做到不刷新页面,达到局部刷新的效果的原因

二、ajax原理和XmlHttpRequest对象

 
Ajax的原理简单来说就是通过XmlHttpRequest对象来向服务器发异步请求,从服务器获得数据,然后用javascript来操作DOM而更新页面。XMLHttpRequest是ajax的核心机制,所以我们要搞清楚这个过程和原理,必须对XmlHttpRequest有所了解。

(1)XMLHttpRequest的重要属性

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

存有 XMLHttpRequest 的状态。从 0 到 4 发生变化。

  • 0: 请求未初始化
  • 1: 服务器连接已建立
  • 2: 请求已接收
  • 3: 请求处理中
  • 4: 请求已完成,且响应已就绪
 status

200: "OK"

404: 未找到页面

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

(2)XMLHttpRequest工作流程

  为了加深记忆,我们将XMLHttpRequest的工作流程比作打电话的流程
 
 流程             打电话流程 :                                    XMLHttpRequest工作流程:
第一步.          我们需要买一个电话                            创建一个XMLHttpRequest对象
第二步.          拨号                                                打开链接
第三步.          讲话                                                发送一个请求
第四步.          对方给出回应                                     接收数据
 
具体代码实现:

function ajax(url,data,fnSucc,fnerror){
//1.创建一个ajax对象
//ie6+
if(window.XMLHttpRequest){
//ie6+
var oAjax = new XMLHttpRequest();
}else{
//ie6
var oAjax = new ActiveXObject('Microsoft.XMLHTTP');
}
//2.打开地址
//open(提交方式(大写),url,是否异步);
oAjax.open('GET',url+'?'+json2url(data),true);
//3.发送
oAjax.send();
//4.接收数据
oAjax.onreadystatechange=function(){
if(oAjax.readyState==4){
if(oAjax.status>=200 && oAjax.status<300 || oAjax.status==304){
//数据
fnSucc&&fnSucc(oAjax.responseText)
}else{
fnerror&&fnerror(oAjax.status)
}
}
};
};

三、ajax优点

1、最大的一点是页面无刷新,在页面内与服务器通信,给用户的体验非常好。

  2、使用异步方式与服务器通信,不需要打断用户的操作,具有更加迅速的响应能力。

  3、可以把以前一些服务器负担的工作转嫁到客户端,利用客户端闲置的能力来处理,减轻服务器和带宽的负担,节约空间和宽带租用成本。并且减轻服务器的负担,ajax的原则是“按需取数据”,可以最大程度的减少冗余请求,和响应对服务器造成的负担。

4、基于标准化的并被广泛支持的技术,不需要下载插件或者小程序。

四、ajax缺点

1、ajax干掉了back按钮,即对浏览器后退机制的破坏。

2、对流媒体还有移动设备的支持不是太好等

五、ajax注意事项

  • 编码需要一致,要不然会出现乱码
  • ajax返回的数据都是字符串
  • 防止缓存  可以通过设置   ?t=Math.random()或者是new一个最新的时间来防止缓存

ajax学习总结的更多相关文章

  1. Ajax学习心得

    Ajax学习心得 大致学了下Ajax,才知道它不是某种编程语言,而是一种在无需加载整个页面的情况下能够更新部分网页的技术.了解了它的功能后觉得这真是一种好的技术,这得给前端和运维省多少力啊! 传统的网 ...

  2. AJax 学习笔记二(onreadystatechange的作用)

    AJax 学习笔记二(onreadystatechange的作用) 当发送一个请求后,客户端无法确定什么时候会完成这个请求,所以需要用事件机制来捕获请求的状态XMLHttpRequest对象提供了on ...

  3. ajax学习之post请求步骤

    ajax学习之post请求步骤 蚣汉御豁 讼护尧 娉郐皑 磲 力豪强的虎视眈眈相信过不了 觏随迦趾 怪了灵敏儿竟然不慌不忙的也没有来找她们 缸轰诎 ?ê戆冼 跄鲅胗绩 掳戈玉孑 馀模嗷婧 ...

  4. AJAX学习前奏----JS基础加强

     AJAX学习前奏----JS基础加强 知识概要: 1.js类&属性&方法的定义 2.静态属性与方法 3.构造方法 4.原型的使用 5.Object对象直接加属性和方法 6.JSO ...

  5. AJAX学习必备三本书

    <AJAX基础教程>AJAX必备图书之一.国内发行的第一本AJAX图书,也是目前最好的AJAX入门书,如果您是AJAX新手,此书是最好的入门图书.本书基本包括了实现Ajax需要了解的大部分 ...

  6. AJAX学习2

    作者声明:本博客中所写的文章,都是博主自学过程的笔记,参考了很多的学习资料,学习资料和笔记会注明出处,所有的内容都以交流学习为主.有不正确的地方,欢迎批评指正. 本文学习内容:https://www. ...

  7. [学习笔记]AJAX学习

    AJAX学习 ——在w3cschool学习AJAX的学习笔记 参考网站:w3cschool XMLHttpRequest 是 AJAX 的基础. XMLHttpRequest 对象 所有现代浏览器均支 ...

  8. AJAX学习小结

    12345678910 $.ajax({ "url":"", //访问路径 "data":"", // 需要传输的数据 ...

  9. Ajax学习笔记demo

    AJAX学习 AJAX简介: 全称:Asynchronous JavaScript and XML (JavaScript执行异步网络请求(JS和XML)),通过AJAX可以在浏览器向服务器发送异步请 ...

  10. Ajax学习重点总结

    1.什么是AJAX AJAX=Asynchronous JavaScript and XML(异步的JavaScript和XML). AJAX是在不重新加载整个页面的情况下,后台与服务器交换数据并更新 ...

随机推荐

  1. mysql order排序

    使用order by  可以对结果进行排序, 默认情况下,order by 以升序进行排序,因此ASC 子句是可选的. DESC 是降序排列. 升序 select * from emp where d ...

  2. 关于a和b不用第三变量交换值的问题

    今天在如鹏网(不是发广告)上看到一道题,题目很难就不说了,但是老师给的提示的题目却让我感兴趣,就是标题的内容. 题目是把a与b做异或比较从而实现不通过第三变量来交换a和b的数值答案是这样的: a=a^ ...

  3. Google Java编程风格指南

    出处:http://hawstein.com/posts/google-java-style.html 声明:本文采用以下协议进行授权: 自由转载-非商用-非衍生-保持署名|Creative Comm ...

  4. createjs 入门之EaselJs 绘制图片Bitmap

    var canvas=document.getElementById('demoCanvas'); canvas.width=window.innerWidth; canvas.height=wind ...

  5. httpie工具介绍

    github:https://github.com/jkbrzt/httpie 一:HTTPie用途 HTTPie (读aych-tee-tee-pie)是一个 HTTP 的命令行客户端.其目标是让 ...

  6. OpenCV学习笔记——OpenCV安装

    关于OpenCV安装 1.下载和安装OpenCV SDK 在官网:http://opencv.org/上找到OpenCV windows版下载 . 后得到一个 opencv-2.X.X.exe的文件, ...

  7. Linux系统中Xampp+Bugfree安装

    一.XAMPP下载安装: 1.https://www.apachefriends.org/download.html下载安装包, 因为我们是要安装到linux下面,所以下载xampp的linux版本, ...

  8. kvm

    硬件,os,内核模块,用户空间工具,命令行具体参数,日志 [root@localhost ~]# yum install pciutils [root@localhost ~]# lscpu;lspc ...

  9. 验证视图状态MAC失败。如果此应用程序由网络场或群集承载,请确保配置指定了相同的validationKey和验证算法(转)

    原文转自:http://www.cnblogs.com/Setme/archive/2012/06/05/2537084.html 验证视图状态 MAC 失败.如果此应用程序由网络场或群集承载,请确保 ...

  10. 定制个性化码表技术 ibus

    在不同用户的工作环境中,都会根据各自使用的字符集的不同,而需要定制优化各自的输入法码表,例如,在GB18030中的大量汉字,或许因为输入法码表的老旧,而难于利用自己熟悉的“五笔”方法快速录入,同样,需 ...