Ajax的工作
Ajax直觉认识:我们发送一个请求,但是这个请求比较特殊它是异步的,也就是说客户端是不会感觉到的。在发送这个请求的时候我们绑定了一个事件,这个事件会监控我们发送请求的状态,并且每次状态改变都会触发,所以我们就可以根据不同的状态让他执行不同的操作。请求到达服务器端的后服务器端根据相应的请求返回对应的信息,这个返回信息我们可以取得并且是异步得到,不会引起客户端刷新。既然在上面已经绑定了监控状态变化的事件,我们就可以在那里首先做好在得到返回信息要做的处理(当然如果失败也会有相应的状态我们也会做出相应的处理),我们在处理中得到返回信息通过javascript在客户端做相应操作
即可。
Ajax核心
—XMLHttpRequest上面我们大概感受了一下Ajax的过程,我们发现发送异步请求才是核心,事实上它就是XMLHttpRequest,整个Ajax之所以能完成异步请求完全是因为这个对应可以发送异步请求的缘故。而且我们又发现上面那个事件就是整个处理过程的核心,可以根据不同状态执行不同操作,其实它就是XMLHttpRequest的方法onreadystatechange,它在每次状态发生改变时都会触发。那么是谁取得的返回信息呢?它就是XMLHttpRequest的另一个方法responseText(当然还有responseXML)。(⊙o⊙)哦,我们还没有说发送给谁以及执行发送操作,这两个就是XMLHttpRequest的open和send方法。Y(^o^)Y,其他的当然还有了,我们直接列出来吧:
XMLHttpRequest对象属性readyState请求状态,开始请求时值为0直到请求完成这个值增长到4responseText目前为止接收到的响应体,readyState<3此属性为空字符串,=3为当前响应体,=4则为完整响应体responseXML服务器端相应,解析为xml并作为Document对象返回status服务器端返回的状态码,=200成功,=404表示“NotFound”statusText用名称表示的服务器端返回状态,对于“OK”为200,“NotFound”为400方法setRequestHeader()向一个打开但是未发生的请求设置头信息
getAllResponseHeaders()把http 相应头作为未解析的字符串返回
getResponseHeader() 返回http相应头的值
每次readyState改变时调用该事件句柄,但是当readyState=3
有可能调用多次代码实现ajax.js
文件代码,也是我们说的主要内容,是一个javascript文件,所有的Ajax操作都在这里:
viewplaincopytoclipboardprint?
1.//与服务器通信
2.functiontalktoServer(url){3.varreq=newXMLHTTPRequst();4.varcallbackHandler=getReadyStateHandler(req);5.req.onreadystatechange=callbackHandler;6.req.open("POST",url,true);7.req.setRequestHeader("Content-Type","application/x-www-form-urlencoded");8.vartestmsg=document.getElementById("testmsg");9.varmsg_value=testmsg.value;10.req.send("msg="+msg_value);11.}12.//创建XMLHTTP对象13.functionnewXMLHTTPRequst(){14.varxmlreq=false;15.if(window.XMLHttpRequest){16.xmlreq=newXMLHttpRequest();17.}elseif(window.ActiveXobject){18.try{19.xmlreq=newActiveXObject("Msxm12.XMLHTTP");20.}catch(e1){
ActiveXObject("Microsoft.XMLHTTP");23.}catch(e2)
服务器回调函数31.functiongetReadyStateHandler(req)
{33.if(req.readyState==4)
document.getElementById("msg_display");36.msg_display.innerHTML=
req.responseText;37.}else
document.getElementById("hellomsg");39.hellomsg.innerHTML="ERROR"+
与服务器通信functiontalktoServer(url)
newXMLHTTPRequst();varcallbackHandler=
getReadyStateHandler(req);req.onreadystatechange=
callbackHandler;req.open("POST",url,
true);req.setRequestHeader("Content-Type","
application/x-www-form-urlencoded");vartestmsg=document.getElementById("
testmsg.value;req.send("msg="+msg_value);
对象functionnewXMLHTTPRequst()
false;if(window.XMLHttpRequest)
XMLHttpRequest();}elseif(window.ActiveXobject)
ActiveXObject("Msxm12.XMLHTTP");}catch(e1)
{xmlreq=newActiveXObject("Microsoft.XMLHTTP"
服务器回调函数functiongetReadyStateHandler(req)
{varmsg_display=document.getElementById("msg_display"
{varhellomsg=document.getElementById("hellomsg"
);hellomsg.innerHTML="ERROR"+
使用ajax.js代码的页面代码,也就是Default.aspx
clipboardprint?1.<%@PageLanguage="C#"AutoEventWireup="true"CodeBehind="Default.aspx.cs"Inherits="myFirst._Default"%
>2.<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
>3.<htmlxmlns="http://www.w3.org/1999/xhtml"
<title></title>6.<mce:scripttype="text/javascript"src="js/ajax.js"mce_src="js/ajax.js"
<body>9.<formid="form1"runat="server"
<div>11.<inputid="testmsg"type="text"value="helloworld"
/>12.<inputid="Button1"type="button"value="button"onclick="talktoServer('Ajax.aspx')"
/>13.<divid="msg_display"style="height:50px;"
</div>15.在此提醒大家,他对应的异步请求页一定不能有form标签,否之就只有将显示信息的div放到此页的form
外了16.,原因很简单:返回信息中有form,在此也显示的时候就造成了form嵌套,不允
</html><%@PageLanguage="C#"AutoEventWireup="true"CodeBehind="Default.aspx.cs"Inherits="myFirst._Default"
%><!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- Ajax工作原理
在写这篇文章之前,曾经写过一篇关于AJAX技术的随笔,不过涉及到的方面很窄,对AJAX技术的背景.原理.优缺点等各个方面都很少涉及null.这次写这篇文章的背景是因为公司需要对内部程序员做一个培训.项 ...
- 关于Ajax工作原理
1.ajax技术的背景 不可否认,ajax技术的流行得益于google的大力推广,正是由于google earth.google suggest以及gmail等对ajax技术的广泛应用,催生了ajax ...
- Ajax工作原理(转)
1.ajax技术的背景 不可否认,ajax技术的流行得益于google的大力推广,正是由于google earth.google suggest以及gmail等对ajax技术的广泛应用,催生了ajax ...
- ajax请求原理及jquery $.ajax封装全解析
.ajax原理: Ajax的原理简单来说通过XmlHttpRequest对象来向服务器发异步请求,从服务器获得数据,然后用javascript来操作DOM而更新页面.这其中最关键的一步就是从服务器获得 ...
- Ajax的原理和运行机制
关于ajax,是最近炒得非常火的一种技术,并且时下它也是非常流行.当然,它并不是什么新技术,而是在各种已有的技术和支持机制下的一个统一.在我的项目中,偶尔也会用到ajax,用来给用户一些无刷新的体验. ...
- Ajax 技术原理(转)
Ajax 技术原理 2010-01-04 原文出处:http://www.nowamagic.net/ajax/ajax_AjaxPrinciple.php 在写这篇文章之前,曾经写过一篇关于AJAX ...
- (转)Ajax的原理和应用
1.ajax技术的背景 不可否认,ajax技术的流行得益于google的大力推广,正是由于google earth.google suggest以及gmail等对ajax技术的广泛应用,催生了ajax ...
- aJax学习之Ajax工作原理
转自:http://www.cnblogs.com/mingmingruyuedlut/archive/2011/10/18/2216553.html 在写这篇文章之前,曾经写过一篇关于AJAX技术的 ...
- ajax请求原理
首先分析使用ajax时候有那些不确定的因素 请求:1 请求的方式不确定 2 请求的地址不确定 3 请求是否异步不确定 4 发送的数据不确定 响应:5 返回的数据不确定 6 响应成功之后 需要处理的业务 ...
- ajax的原理解析
一.关于同步与异步的分析: 异步传输是面向字符的传输,它的单位是字符:而同步传输是面向比特的传输,它的单位是桢,它传输的时候要求接受方和发送方的时钟是保持一致的.而ajax就是采用的异步请求方式的. ...
随机推荐
- PHPStorm 与 XDebug 配置
XDebug 配置 环境 Nginx 1.4.7 32 bit PHP 5.4.25 32 bit Windows 10 64 bit 下载 PHP 5.4 VC9 (32 bit)[nts版本] 配 ...
- 全球IP分布表
24.192.0.0 24.195.255.255 亚洲 61.0.0.0 61.255.255.255 亚洲 61.8.0.0 61.8.31.255 澳大利亚 61.128.0.0 61.143. ...
- The communication of Linux Server and Localtion
当用Secure CRT远程登录服务器时,若建立本地与服务器间文件自由传输的机制,我们就可以实现远程办公.具体方法如下: 1. 确定远程服务器的IP.可以通过Secure CRT进行远程登录. 2.在 ...
- em和rem
em是一个相对值,是相对于父元素的值. body{ font-size:62.5%;/*10/16*100%=62.5%*/ } h1{ font-size:2.4em;/*2.4em*10=24px ...
- 深入理解js构造函数
JavaScript对象的创建方式 在JavaScript中,创建对象的方式包括两种:对象字面量和使用new表达式.对象字面量是一种灵活方便的书写方式,例如: ? 1 2 3 4 5 6 var o1 ...
- mysql 命令(二)
1.创建数据库,并制定默认的字符集是utf8. CREATE DATABASE IF NOT EXISTS yourdbname DEFAULT CHARSET utf8 COLLATE utf8_g ...
- shell中$0,$?,$!等变量意义
变量说明: $$ #Shell本身的PID(ProcessID) $! #Shell最后运行的后台Process的PID $? #最后运行的命令的结束代码(返回值) $- ...
- Deep Learning 23:dropout理解_之读论文“Improving neural networks by preventing co-adaptation of feature detectors”
理论知识:Deep learning:四十一(Dropout简单理解).深度学习(二十二)Dropout浅层理解与实现.“Improving neural networks by preventing ...
- The The Garbage-First (G1) collector since Oracle JDK 7 update 4 and later releases
Refer to http://www.oracle.com/technetwork/tutorials/tutorials-1876574.html for detail. 一些内容复制到这儿 Th ...
- KEGG数据库
参考:KEGG数据库中文教程 - 博奥 &[学习笔记]KEGG数据库 - 微信 学习一个技能最主要的事情你必须知道,那就是能通过它来做什么? KEGG数据库里面有什么? 如何查询某一特定的代 ...