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就是采用的异步请求方式的. ...
随机推荐
- 小识Tableau
关于 Tableau Tableau 帮助人们将数据转化为可以付诸行动的见解.探索无所不能的可视化分析.只需点击几下即可构建仪表板,进行即兴分析. Tableau与R对比: 1.从开发的角度讲,Tab ...
- Excel-漏斗图分析(差异分析)
漏斗图适用于业务流程比较规范.周期长.环节多的流程分析,通过漏斗各环节业务数据的比较,能够直观地发现和说明问题所在.在网站分析中,通常用于转化率比较,它不仅能展示用户从进入网站到实现购买的最终转化率, ...
- 一看便知_配置linux 网络配置的几种方法
一. - setup 进入设置 - /etc/rc.d/init.d/network restart 运行完才会生效刚才的修改 二.命令设置 [临时生效]- i ...
- jquery 设置页面元素不可点击、不可编辑、只读(备忘)
$("input").attr('readonly', true); $("textarea").attr('readonly', true); $(':rad ...
- maven创建子项目(适用于多模块管理项目)
在eclipse或者myeclipse下构建maven项目,该项目由多个子模块组成. 1.创建一个父项目 NEW -->project-->maven-->maven Project ...
- 自建数据源(RSO2),并支持增量
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...
- [bzoj1122][POI2008]账本BBB
1122: [POI2008]账本BBB Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 402 Solved: 202[Submit][Status ...
- mysql基本命令整理
1.replace into(insert into 的增强版) replace into tbl_name(col_name, ...) values(...)replace into tbl_na ...
- 慕课网__css_padding && z_index
一个正方形 对于“内联元素”来说 z-index 静态布局没有z-index作用
- (十一)socket、connect、bind函数详解
一.socket函数 1.头文件: #include <sys/types.h> /* See NOTES */ #include <sys/socket.h> 2.函数原型: ...