posts - 108,comments - 56,trackbacks - 0
一、由于XMLHttpRequest不是一个W3C标准,所以可以采用多种方法使用JavaScript来创建XMLHttpRequest的实例。IE把XMLHttpRequest实现为一个ActiveX对象,其他浏览器(如FireFox,Safari和Opera)把它实现为一个本地JavaScript对象。由于存在这些差别,JavaScript代码中必须包含有关的逻辑,从而使用ActiveX或者使用本地JavaScript对象技术来创建XMLHttpRequest的一个实例。

二、标准XMLHttpRequest操作
  abort():停止当前请求;
  getAllResponseHeaders():把HTTP请求的所有的响应首部作为键/值对返回;
  getResponseHeader(STring header):返回指定首部的串值;
  open(String method,String url,boolean asynch,String username,String password):建立对服务器的调用,method可以是get,pos或put。url参数可以是相对url或绝对url,后面三个参数是可选的。asynch表示这个调用是异步的还是同步的,默认是true,表示请求本质上是异步的,如果这个参数为false,处理就会等待,直到从服务器返回响应为止。由于异步调用是使用Ajax的主要优势之一,所以倘若将这个参数设置为false,从某种程度上讲与使用XMLHttpRequest对象的初衷不太相符。不过,在某些情况下设置这个参数为false也是有用的,比如在持久存储页面之前可以先验证用户的输入。最后两个参数允许指定一个特定的用户名和密码。
  void send(content):这个方法具体想服务器发出请求,如果请求声明为异步的,这个方法就会立即返回,否则它会等待直到结束到响应为止。可选参数可以是DOM对象的实例,输入流,或者串。传入这个方法的内容会作为请求体的一部分发送。
       void setRequestHeader(String header,String value):这个方法为HTTP请求中一个给定的首部设置值。注意,这个方法必须在调用open()之后才能调用。
       String getAllResponseHeaders():这个方法返回一个串,其中包含HTTP请求的所有首部,包括Content-Length、date和url。

三、标准XMLHttpRequest属性
  onreadystatechange:每个状态改变时都会触发这个事件器,通常会调用一个javaScript函数;
  readyState:请求的状态。有5个可选值:0=未初始化,1=正在加载,2=已加载,3=交互中,4=完成;
  responseText:服务器的响应,表示为一个串;
  responseXMl:服务器的响应,表示为XML,这个对象可以解析为一个DOM对象;
  status:服务器的HTTP状态码(200对应OK,404对应Not Found(未找到),等等);
  statusText:HTTP状态码的相应文本(OK或Not Found等等);

四、用于处理XML文档的DOM元素属性
  childNodes:返回当前元素的所有子元素的数组;
  firstChild:返回当前元素的第一个下级子元素;
  lastChild:返回当前元素的最后一个子元素;
  nextSibling:返回当前元素后面的元素(下一个兄弟);
  nodeValue:指定表示元素值的读/写属性;
  parentNode:返回当前元素的父节点;
  previousSibling:返回当前元素的前一个元素(前一个兄弟);

五、用于遍历XML文档的DOM元素方法
  getElementById(id):获取有唯一ID属性值文档中的元素;
  getElementsByTagName(name):返回当前元素中有指定标记名的子元素的数组;
  hasChildNodes():返回一个布尔值,表示元素是否还有子元素;
  getAttribute(name):返回元素的属性值,属性有name指定;

六、动态创建内容时常用到的DOM属性和方法
  document.createElement(tageName):创建由tagName指定的元素;
  document.createTextNode(text):创建一个包含静态文本的节点;
  <element>.appendChild(childNode):给当前元素增加一个子节点;
  <element>.getAttribute(name):获取name属性;
  <element>.setAttribute(name,value):设置name属性的值;
  <element>.insertBefore(newNode,targetNode):把节点newNode作为当前元素的子节点插入带targetNode元素的前面
  <element>.removeAttribute(name):这个方法从元素中删除属性name;
  <element>.removeChild(childNode):删除子元素;
  <element>.replaceChild(newNode,oldNode):替换节点;

七、判断IE浏览器
  IE能识别出名为uniqueID的document对象的专用属性,IE也是唯一能识别这个属性的浏览器,所以使用这个属性可以确定浏览器,例如:
  if(document.uniqueID){//IE
  var radioButton=document.createElement("<input type='radio' name='radioButton' value='checked'>");
}
else{
  var radioButton=document.createElement("input");
  radioButton.setAttribute("type","radio");
  radioButton.setAttribute("name","radioButton");
  radioButton.setAttribute("value","checked");
}

八、Struts+AJAX实例:
   1、简单的返回文本
   Struts端:(页面JS端读取responseText)
/**
 * 检测VIP客户网址
 * (-2:处理出错,-1:没有数据,0:有客户数据且不是VIP,1:已经是VIP)
 
*/
public void checkVipuser(ActionMapping actionMapping,ActionForm actionForm,HttpServletRequest request,
HttpServletResponse response) {
  PrintWriter out
=null;
  
int result=-2;
  
try{
    out 
= response.getWriter();
    String weburl
=request.getParameter("weburl");
    
//后台处理(省略)
    out.print(result);
    out.flush();
    out.close();
  }
catch(Exception e){
    e.printStackTrace();
  }
}
   2、返回XML
   Struts端:(页面JS端读取responseXML)
public void searchEmployee(ActionMappingactionMapping,ActionFormactionForm,HttpServletRequestrequest,HttpServletResponseresponse){
  response.setContentType(
"text/xml;charset=utf-8");
  PrintWriterout
=null;
  
try{
    out
=response.getWriter();
    out.print(
"<?xmlversion=\"1.0\"encoding=\"utf-8\"?>");
    out.print(
"<rootnode>");
    out.print(
"<pro1='valu1' pro2='valu2' pro3='valu3' pro4='valu4'/>");
    out.print(
"</rootnode>");
    out.flush();
    out.close();
  }
catch(Exceptione){
    e.printStackTrace();
    out.print(
"<?xmlversion=\"1.0\"encoding=\"utf-8\"?>");
    out.flush();
    out.close();
  }    
}
posted on 2007-05-30 16:24 破茧而出 阅读(454) 评论(0)  编辑  收藏 所属分类: AJAX

只有注册用户登录后才能发表评论。


网站导航: