1、什么是AJAX

AJAX=Asynchronous JavaScript and XML(异步的JavaScript和XML)。

AJAX是在不重新加载整个页面的情况下,后台与服务器交换数据并更新部分网页的技术。

通过AJAX,javascript无需等待服务器的响应,而是在等待服务器时执行其他脚本,并当响应就绪后对响应进行处理。

记住,javascript会等到服务器响应就绪才继续执行。如果服务器繁忙或缓慢,应用程序会挂起或停止。

2、AJAX XHR

XMLHttpRequest是AJAX的基础。

2.1、创建XMLHttpRequest对象

所有现代浏览器均支持XMLHttpRequest对象,语法为:

variable=new XMLHttpRequest();

IE5和IE6使用ActiveXObject,语法为:

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

综上,创建XMLHttpRequest对象的完整代码为:

var xmlhttp;
if(window.XMLHttpRequest){
xmlhttp=new XMLHttpRequest();
}
else{
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}

XMLHttpRequest对象用于和服务器交换数据。

2.2、向服务器发送请求

使用XMLHttpRequest对象的open()和send()方法:

xmlhttp.open("GET","test1.txt",true);
//规定请求的类型,URL以及是否异步处理请求
//请求的类型:GET or POST
//文件在服务器上的位置
//异步(true)或同步(false)
xmlhttp.send();
//将请求发送到服务器
//send(string)仅用于POST请求

大部分情况使用GET;

以下情况使用POST:

  1. 无法使用缓存文件(更新服务器上的文件或数据库)
  2. 向服务器发送大量数据(POST没有数据量限制)
  3. 发送包含未知字符的用户输入时,POST比GET更稳定也更可靠。

2.2.1、GET请求

最简单的就是xmlhttp.open("GET","demo_get.asp",true);

为避免缓存,也可在url里加入唯一的id,即

xmlhttp.open("GET","demo_get.asp?t=" + Math.random(),true);
xmlhttp.send();

另外,如果希望通过GET发送消息,要向url添加信息,即

xmlhttp.open("GET","demo_get2.asp?fname=Bill&lname=Gates",true);
xmlhttp.send();

2.2.2、 POST请求

最简单的同样是xmlhttp.open("POST","demo_post.asp",true);

另外,如果需要像html表单那样post数据,要使用 setRequestHeader() 来添加 HTTP 头。然后在 send() 方法中规定希望发送的数据,即:

xmlhttp.open("POST","ajax_test.asp",true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send("fname=Bill&lname=Gates");

其中,setRequestHeader(header,value)方法用于向请求中添加http头,header规定头的名称,value规定头的值。

2.2.3、URL

url是服务器上文件的地址,并可以是任何类型的文件。

2.2.4、异步or同步

当Async=true(异步)时,规定在响应处于onreadystatechange事件中的就绪状态时执行的函数:

xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","test1.txt",true);
xmlhttp.send();

不推荐,但对于一些小型的请求也是可以的。----当Async=false(同步)时,就不需要编写onreadystatechange函数,把函数放到send后面即可。

xmlhttp.open("GET","test1.txt",false);
xmlhttp.send();
document.getElementById("myDiv").innerHTML=xmlhttp.responseText;

2.3、服务器响应

responseText属性返回字符串形式的响应:

document.getElementById("myDiv").innerHTML=xmlhttp.responseText;

responseXML属性返回XML形式的响应:

xmlDoc=xmlhttp.responseXML;

2.4、onreadystatechange事件

XHR对象有三个重要的属性:

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

readyState        存有XHR的状态。从0到4变化。

            0:请求未初始化

            1:服务器连接已建立

            2:请求已接收

            3:请求处理中

            4:请求已完成,且响应已就绪。

status         200:“OK”

            404:未找到页面

当readyState等于4且status等于200时,表示响应已就绪。

注意:callback(回调)函数---当你的网站上存在多个AJAX任务,那么就应该为创建XMLHttpRequest对象编写一个标准的函数,并为每个AJAX任务调用该函数。

<script>
var xmlhttp;
function loadXMLDoc(url,cfunc)
{
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=cfunc;
xmlhttp.open("GET",url,true);
xmlhttp.send();
}
function myFunction()
{
loadXMLDoc("/ajax/test1.txt",function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
}
});
}
</script>

3、AJAX 高级

3.1、 AJAX ASP/PHP

参考上篇博文中的测试实例1

3.2、AJAX数据库

这里html文件里的内容没什么好说的。主要是服务器端文件写好就行。后面会对服务端的语言进行学习总结。

3.3、AJAX XML文件

参考上篇博文中的测试实例2

以上。

 

Ajax学习重点总结的更多相关文章

  1. Ajax学习心得

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

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

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

  3. 学习重点:1、金典的设计模式在实际中应用2、JVM原理3、jui源代码

    学习重点:1.金典的设计模式在实际中应用 2.JVM原理 3.jui源代码

  4. ajax学习之post请求步骤

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

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

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

  6. AJAX学习必备三本书

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

  7. Python学习---重点模块的学习【all】

    time     [时间模块] import time # print(help(time)) # time模块的帮助 print(time.time()) # 时间戳 print(time.cloc ...

  8. AJAX学习2

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

  9. [学习笔记]AJAX学习

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

随机推荐

  1. BADI_MATERIAL_CHECK(物料主数据表的增强检查)

    多次调用的BADI,'业务加载项定义的多重使用意味着可以有多个活动的 业务加载项实施.在进行调用时,将调用所有上述实施,但调用顺序不可预期. 因此,如果使用多重使用 业务加载项定义,那么顺序不得起到任 ...

  2. ACCESS导入CSV文件出现乱码解决办法

    在ACCESS或Excel中导入CSV文件时常常出现乱码,这是因为简体中文版的windows操作系统及其应用软件默认都是ANSI/GBK编码,而导入的文件使用的编码与操作系统默认的编码不相符.出现这种 ...

  3. 时间的处理 --java

    得到当天时间 SimpleDateFormat format = new SimpleDateFormat( "yyyy-MM-dd" ); String todayData = ...

  4. PDF 补丁丁 0.5.0.2731 发布(增加去除页面表单和链接水印功能)

    新的版本增加了简单的删除表单和链接批注的功能,使用该功能可去掉某些软件打上的水印. 在 PDF 文档选项中选中“清除页面所有表单”和“清除页面所有链接批注”项后,程序将会删除页面的表单和链接批注. 效 ...

  5. .net单元测试初探

    写在前面 组里接手了一个在运行的票台系统,包括收银,客户体验,店内商超等子系统,要求将服务端进行云端化,以应对分店的增多和决策层对于数据的需要,而随着时间的退役和各种收费策略的改变,促销活动的展开等, ...

  6. Spring Boot中的注解

    文章来源:http://www.tuicool.com/articles/bQnMra 在Spring Boot中几乎可以完全弃用xml配置文件,本文的主题是分析常用的注解. Spring最开始是为了 ...

  7. 建设商城网站ecshop如何开启伪静态

    ecshop是国内一款比较流行的商城网站建设系统,它拥有比较完善的电子商务交易流程,其使用PHP+网站建设者的喜爱.   商城网站也需要网站优化,开启伪静态是个比较好的方法.   ECSHOP的伪静态 ...

  8. Nehe Opengl

    http://nehe.gamedev.net/tutorial/lessons_01__05/22004/ Nehe Opengl,据说从基础到高端进阶都是很好的教程,准备学习这个序列,顺便记录下随 ...

  9. git branch(git 的branch 使用方法)

    查看分支:         $ git branch    该命令会类出当先项目中的所有分支信息,其中以*开头的表示当前所在的分支.参数-r列出远程仓库中的分支,而-a则远程与本地仓库的全部分支. 创 ...

  10. 转: Rest简介及Spring实现

    一 Roy Fielding 2000年Rest被Roy Fielding提出来的,我对Roy Fielding的印象有以下几个. 一是RoyFielding做为Http协议的起草者,在Http协议发 ...