Ajax初体验

    技术2022-05-11  78

    Ajax出道已经不久了,决定一试身手,首先要了解Ajax的原理

    Ajax并不是什么新技术,它集中了集中技术:   1. HTML 用于建立 Web 表单并确定应用程序其他部分使用的字段。    2.JavaScript 代码是运行 Ajax 应用程序的核心代码,帮助改进与服务器应用程序的通信。      3.DHTML 或 Dynamic HTML,用于动态更新表单。我们将使用 div、span 和其他动态 HTML 元素来标记 HTML。    4.文档对象模型 DOM 用于(通过 JavaScript 代码)处理 HTML 结构和(某些情况下)服务器返回的 XML。 

    首先了解XMLHttpRequest对象,这是一个javascirpt对象,通过XMLHttpRequest与服务器通话,这是ajax的强大技术。创建方式:   if(window.ActiveXObject){ xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");   }   else if(window.XMLHttpRequest){ xmlHttp = new XMLHttpRequest();   }其次,Ajax的请求与响应。发出请求:   1.从 Web 表单中获取需要的数据。    2.建立要连接的 URL。    3.打开到服务器的连接。    4.设置服务器在完成后要运行的函数。    5.发送请求。    xmlHttp.onreadystatechange = handleStateChange;   xmlHttp.open("GET", "server/svrList.jsp", true);   xmlHttp.send(null);   xmlHttp的属性onreadystatechange可以告诉服务器在运行完成之后,由谁来做什么。这里由handleStateChange来处理。   function handleStateChange(){ if(xmlHttp.readyState == 4){  if(xmlHttp.status == 200){   alert('the server replied with ' + xmlHttp.responseText);  }  else{   alert('wrong');  } }   }   xmlHttp的open方法有三个参数:   第一个告诉服务器请求的方式是GET、POST   第二个告诉服务器请求的URL,它可以是servlet、jsp或者是struts的action(本质也是servlet)   第三个“true”是表示是一个异步请求,false则表示同步。   send方法的参数要设置为null,当open的设置成异步请求时。

    最后处理响应:   function handleStateChange(){ if(xmlHttp.readyState == 4){  if(xmlHttp.status == 200){   alert('the server replied with ' + xmlHttp.responseText);  }  else{   alert('wrong');  } }   }   通过xmlHttp的属性readyState来判断状态。   0   uninitialized   1   loading   2   loaded   3   interactive   4   complete  完毕   status属性表示返回状态。     404 表示没找到     200 表示ok   responseText以字符串形式返回   responseXML以xml形式返回,可以W3C的DOM进行解析。

       完整的例子:<%@ page language="java" contentType="text/html; charset=gbk"    pageEncoding="gbk"%>    <%@ taglib uri="WEB-INF/tlds/site-utils.tld" prefix="site-utils" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><meta http-equiv="Content-Type" content="text/html; charset=gbk"><title>Insert title here</title><script type="text/javascript"> var xmlHttp;  function createXMLHttpRequest(){  if(window.ActiveXObject){   xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");  }  else if(window.XMLHttpRequest){   xmlHttp = new XMLHttpRequest();  }   }  function startRequest(){  createXMLHttpRequest();  xmlHttp.onreadystatechange = handleStateChange;  xmlHttp.open("GET", "server/svrList.jsp", true);  xmlHttp.send(null); }  function handleStateChange(){  if(xmlHttp.readyState == 4){   if(xmlHttp.status == 200){    alert('the server replied with ' + xmlHttp.responseText);   }   else{    alert('wrong');   }  } }</script></head><body>   hello:   <site-utils:lastModified/>      <form action="#">    <input type="button" value="ajax test" οnclick="startRequest()"/>   </form>

    </body></html>


    最新回复(0)