ajax

Ajax应用程序所用的基本技术: 
HTML用于建立Web表单并确定应用程序其他部分使用的字段。 
JavaScript代码是运行Ajax应用程序的核心代码,帮助改进与服务器应用程序的通信。 
DHTML或Dynamic HTML,用于动态更新表单。我们将使用div、span或其他动态HTML元素来标记HTML。 
文档对象模型DOM用于处理HTML结构和服务器返回的XML。 

创建新的XMLHttpRequest对象,它负责处理所有服务器通信的对象。 
<script language="javascript" type="text/javascript'> 
    var xmlHttp = new XMLHttpRequest(); 
</script> 

Ajax基本上就是把JavaScript技术和XMLHttpRequest对象放在Web表单和服务器之间。当用户填写表单时,数据发送给一些JavaScript代码而不是直接发送给服务器。相反,JavaScript代码捕获表单数据并向服务器发送请求。请求是异步发送的,不用等待服务器的响应。然后服务器将数据返回JavaScript代码,后者决定如何处理这些数据。 

得到XMLHttpRequest的句柄后,其他的JavaScript代码就非常简单了。事实上,我们将使用JavaScript代码完成非常基本的任务: 
获取表单数据:JavaScript代码很容易从HTML表单中抽取数据并发送到服务器。 
修改表单上的数据:更新表单很简单,从设置字段值到迅速替换图像。 
解析HTML和XML:使用JavaScript代码操纵DOM,处理HTML表单服务器返回的XML数据的结构。 

在Mirosoft浏览器上创建XMLHttpRequest对象 
var xmlHttp = false; 
try{ 
   xmlHttp = new ActiveXObject("Msxml2.XMLHTTP"); 
}catch(e){ 
   try{ 
      xmlHtt = new ActiveXObject("Microsoft.XMLHTTP"); 
   }catch(e2){ 
      xmlHttp = false; 
   } 

处理Mozilla和Microsoft浏览器 
var xmlHttp = new XMLHttpRequest(); 

支持多种浏览器的方式创建XMLHttpRequest对象 
/* Create a new XMLHttpRequest object to talk to the WEB server*/ 
var xmlHttp = false; 
/*@cc_on @*/ 
/@if (@_jscript_version >=5) 
try{ 
   xmlHttp = new ActiveXObject("Msxml2.XMLHTTP"); 
}catch(e){ 
   try{ 
       xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); 
   }catch(e2){ 
       xmlHttp = false; 
   } 

@end @*/ 
if(!xmlHttp&&typeof XMLHttpRequest != 'undefined'){ 
   xmlHttp = new XMLHttpRequest(); 


发送请求: 
1.从Web表单中获取所需要的数据 
2.建立要连接的URL 
3.打开到服务器的连接 
4.设置服务器在完成后要运行的函数 
5.发送请求 

function callServer(){ 
  var city = document.getElementById("city").value; 
  var state = document.getElementById("state").value; 
  if(city==null || city=="") return null; 
  if(state==null || state=="") return null; 
  var url = "/scripts/getZipCode.php?city="+escape(city)+"&state="+escape(state); 
  //Open a connection to the server 
  xmlHttp.open("GET",url.true); 
  //Setup a function for the server to run when it's done 
  xmlHttp.onreadystatechange = updatePage;  
  //Send the request 
  xmlHttp.send(null); 


处理响应: 
什么也不要做,直到xmlHttp.readyState属性的值等于4 
服务器将把响应填充到xmlHttp.responseText属性中 
function updatePage(){ 
   if(xmlHttp.readyState == 4){ 
       var response = xmlHttp.responseText; 
       document.getElementById("zipCode").value= response; 
   } 


XMLHttpRequest简介 
open():建立到服务器的新情求 
send():向服务器发送请求 
abort():推出当前请求 
readyState:提供当前HTML的就绪状态 
reponseText:服务器返回的请求响应文本 

javaScript浏览器对象 
1.window对象 
  是Document、Location和History对象的父对象。 
属性: 
  name:指定窗口名称 
  parent:代表当前的父窗口。返回属性和方法。 
  opener:返回当前窗口。返回属性和方法。 
  top:代表主窗口(所有的父窗口)。返回属性和方法。 
  self:返回当前窗口的一个对象。返回属性和方法。 
  defaultstatus:返回设置在浏览器状态栏中显示的默认内容。 
  status:返回设置将在浏览器状态栏中显示的指定内容。 
status = Dataformat(date); 

方法: 
  alert(); 
  confirm(); 
  prompt(); 
  open(url,name,attr); 
  close(); 
  navigate();在当前窗口中显示制定网页 
Window.navigate "http://www.baidu.com" 
  setTimeout();设置一个定时器,经指定时间间隔后调用过程 
Window.setTimeout(过程名,时间间隔,脚本语言); 
  clearTimeout();给指定的计数器复位 
Window.clearTimeout 计数器名称 
  focus();获取当前焦点 
  blur();当前对象失去焦点 
事件: 
  OnLoad{} 当HTML文件载入浏览器时 
  OnUnLoad{} 当HTML文件从浏览器删除时 
  OnFocus{} 获得焦点时 
  OnBlur{} 失去焦点时 
  OnHelp{} 用户按下F1时 
  onResize{} 用户调整窗口大小时 
  OnScroll{} 滚动窗口时 
  OnError{} 载入HTML文件出错时 


2.Document对象 
  Documnet对象表示在浏览器窗口或其中一个框架中显示的HTML文档,通过该对象的属性和方法可以获得和控制页面对象的外观和内容。Document对象包含以下对象和集合:All(文档中所有元素的集合)、Anchors(锚点集合)、Applets(Java的小程序集合)、Body(文档主题对象)、Children(子元素集合)、Embeds(嵌入对象)、Form(表单集合)、Frames(框架集合)、Images(图像集合)、Links(链接集合)、Plugins(插件集合)、Scripts(脚本集合)、Selection(选择器对象)和StyleSheets(级联样式表集合)。 
属性: 
  fgColor:设置或返回文档的颜色 
  bgColor:设置或返回文档背景的颜色 
  linkColor:设置或返回文档中超链接的颜色 
  alinkColor:设置或返回文档中活动链接的颜色 
  vlinkColor:设置或返回已经访问过的超链接的颜色 
  title:返回当前文档标题 
  location:设置或返回文档的URL 
  parentWindow:包含此HTML文件的上层窗口 
  referrer:返回链接到当前页面的那个页面URL 
  lastModified:返回当前文档的最后修改日期 
  all:返回所有标记和对象 
  anchors:表示文档中的锚点,每个锚点都被存储在anchros数组中 
  links:表示文档中的超链接,每个超链接都存储在links数组中 
  form:返回所有表单 
  images:返回所有图像 
  stylesheets:返回所有样式属性对象 
  applets:返回所有Applet对象 
  embeds:返回所有嵌入标记 
  scripts:返回所有Script对象 
方法: 
  open() 打开要输入的文档 
  write() 向文档中写入HTML代码 
  writeLn() 向文档中写入HTML代码后换行 
  close() 关闭文档,并显示所有使用write和writeLn方法写入的内容 
  clear() 清除当前文档的内容,刷新屏幕 
事件: 
  onClick:function(){} 单击鼠标 
  onDbClick{} 双击鼠标 
  onMouseDown{} 按下鼠标左键 
  onMouseUp{} 放开鼠标左键 
  onMouseOver{} 鼠标移到对象上 
  onMouseOut{} 鼠标离开对象 
  onMouseMove{} 移动鼠标 
  onSelectStart{} 开始选取对象内容 
  onDragStart{} 开始以拖动方式移动选取对象内容 
  onKeyDown{} 按下键盘按钮 
  onKeyPress{} 当用户按下任意键时,先产生KeyDown事件,若用户一直按住左键,则产生连续的KeyPress事件 


3.History对象 
  History对象包含用户已浏览过的URL集合,提供浏览器导航按钮功能,可以通过文档的历史记录来浏览文档。 
属性: 
  length:返回历史表中的URL地址数目 

方法: 
  back() 在历史表中向后搜索 
  forward() 在历史表中向前搜索 
  go() 在历史表中跳转到指定的项 

4.Navigator对象 
  Navigator对象包含浏览器的信息 
属性: 
  appCodeName:返回浏览器的代码名称 
  appName:返回浏览器的名称 
  appVersion:返回浏览器的版本号 
  userLanguage:返回当前用户所使用的语言 
  cookieEnable:若允许使用cookies,则该属性返回true,否则返回false 

方法: 
  java.Enable();确定浏览器中的java是否可用 

5.Location对象  
  包含当前的URL信息 
属性: 
  href:返回或设置当前文档的完整URL 
  hash:返回或设置当前URL中#后的部分的名称 
  host:返回或设置udangqianURL中的主机名和端口部分 
  hostname:返回或设置当前URL中的主机名 
  port:返回或设置当前URL中的端口部分 
  path:返回或设置当前URL中的路径部分 
  protocol:返回或设置当前URL中的协议类型 
  search:返回或设置当前URL中的查询字符串,即提交给服务器时在URL中紧跟?后面的内容 

方法: 
  reload() 重新加载当前文档 
  replace() 用参数中给出的网址替换当前的网址 
  assign() 将当前URL地址设置为其参数所给出的URL 


XMLHttpRequest对象提供客户端与HTTP服务器异步通信协议。 
var xmlHttp; 

function createXMLHttpRequest(){ 
   if(window.XMLHttpRequest){ 
       xmlHttp = new XMLHttpRequest(); 
   } 
   else if(window.ActiveXObject){ 
       xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); 
   } 

创建了XMLHttpRequest对象后,通过在js脚本中调用XMLHttpRequest对象的方法和XMLHttpRequest的属性,实现Ajax的功能。 
属性: 
  onreadystatechange:状态改变事件触发器,每个状态改变都会触发这个事件触发器 
  readyState:对象状态:0=未初始化 1=正在加载 2=已加载 3=交互中 4=完成 
  responseText:服务器的响应 字符串 
  responseXML:服务器的响应 XML 该对象可以解析为一个DOM对象 
  status:服务器返回的HTTP状态吗 
  statusText:HTTP状态码的相应文本 
方法: 
  abort() 停止当前请求 
  getAllResponseHeaders() 将HTTP请求的所有响应首部作为键/值对返回 
  getResponseHeader("header") 返回指定首部的字符串 
  open("method","url"[,asyncFlag[,"username"[,"password"]]]) 建立对服务器的调用,method参数可以是相对或绝对URL。该方法有3个参数可选:asyncFlag=是否非同步标记 username=用户名 password=密码 
  send(content) 向服务器发送请求 
  setRequestHeader("header","value") 把指定首部设置为所提供的值,在调用方法之前必须先调用open方法 
ajax利用浏览器与服务器之间的一个通道来完成数据提交或请求。页面的脚本程序通过浏览器提供的空间完成数据的提交和请求,并将返回的数据由js处理后展现到页面上。整个过程由浏览器、js、jsp共同完成,AJAX就是这组技术的总称。 

ajax的请求和响应过程如下: 
网页调用js程序-->js利用浏览器提供的XMLHTTP对象向Web服务器发送请求-->请求的URL资源处理后返回结果给浏览器的XMLHTTP-->XMLHTTP对象调用实现设置的处理方法-->js方法解析返回的数据,利用返回的数据更新页面。 

原文地址:https://www.cnblogs.com/forerver-elf/p/4724223.html