Swing


天行健 君子以自强不息

posts - 69, comments - 215, trackbacks - 0, articles - 16
   :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

ajax学习点滴(不断增加中)

Posted on 2007-06-26 15:26 zht 阅读(993) 评论(0)  编辑  收藏 所属分类: J2EE

      把学习ajax的一些知识记录一下,以后不断补充。

      用于处理XML文档的DOM元素属性

属性

描述

childNodes

返回当前元素所有子元素的数组

firstChild

返回当前元素的第一个下级子元素

lastChild

返回当前元素的最后一个子元素

nextSibling

返回紧跟在当前元素后面的元素

nodeValue

指定表示元素值的读/写属性

parentNode

返回元素的父节点

previousSibling

返回紧邻当前元素之前的元素

 

用于遍历XML文档的DOM元素方法

方法

描述

getElementById(id)

获取文档中有指定唯一ID属性值的元素

getElementsByTageName(name)

返回当前元素中有指定标记名的子元素的数组

hasChildNodes()

返回一个布尔值,指示元素是否有子元素

getAttribute(name)

返回元素的属性值,属性由name指定


 

属性/方法

描述

Document.createElement(tagName)

文档对象上的createElement方法可以创建由tagName指定的元素。如果以字符串串div作为方法参数,就会生成一个div元素

Document.createTextNode(text)

文档对象的createTextNode方法会创建一个包含静态文本的节点。

<element>.appendChild(childNode)

appendChild方法将指定的节点增加到当前元素的子节点列表(作为一个新的子节点)。例如:可以增加一个option元素,作为select元素的子节点。

<element>.getAttribute(name)

<element>.setAttribute(name)

这些方法分别获得和设置元素中name属性的值。

<element>.insertBefore(newNode,targetNode)

这个方法将节点newNode作为当前元素的子节点插到targetNode元素前面。

<element>.removeAttribute(name)

这个方法从元素中删除属性name。

<element>.replaceChild(newNode,oldNode)

这个方法将节点oldNode替换位节点newNode。

<element>.hasChildnodes()

这个方法返回一个布尔值,指示元素是否有子元素。

<element>.cloneNode(true)

克隆当前元素,并返回新元素


      1、在XML文档中文本本身被认为一个节点,而且必须是另外一个节点的子元素,ex)<state>shandong</state> shandong 其实是state的子元素,必须先从state获取文本元素,再从这个文本元素得到文本内容,
具体代码如下:
var xmlDoc=xmlHttp.responseXML;
var allStates=xmlDoc.getElementsByTagName("state");//得到一个state的数组
var currentState=null;
for(var i=0;i<allStates.length;i++){
   currentState=allStates[i];//得到具体的一个state元素
   alert(currentState.childNodes[0].nodeValue);//文本元素是state的第一个子元素
   //通过childNodes属性得到state元素的文本元素,
   //nodeValue返回文本元素的内容
}
      
      2、关于浏览器的不兼容性引起的问题的解决方法
      (1)、如果使用appendChild()将tr添加到一个table中,在ie中将不会出现此行
            解决方法:将tr元素添加到表的<tbody>元素中
      (2)、IE中不能使用setAttribute正确的设置class属性,
            解决方法:同时使用setAttribute("class","newclassName");和
            setAttribute  ("className","newclassName");
      (3)、IE中不能使用setAttribute设置style属性
            解决方法:<element>.style.cssText="font-size: 12px; "

      3、用post方法发送数据的时候,需要设置xmlHttp.setrequestheader("Content-Type","application/x-www-form-urlencoded");让服务器知道请求体中有请求参数。

      4、在请求中加入"&timeStamp="+new Date().getTime()的作用:有些浏览器会把多个xmlHttp请求的结果缓存在同一个url,如果对每个请求的响应不同会带来不好的后果,加上时间戳以后就可以保证URL的唯一性,避免浏览器缓存结果。

      5、xmlHttp.setrequestheader("contentType","text/html;charset=uft-8");可以解决发送过程中的汉字乱码问题。   

      6、动态刷新的实现:核心就是setTimeout()方法通过setTimeout("startCallServer()",5000);方式隔5S后执行startCallServe方法 注意setTimeout方法只执行一次,所以在事件处理函数里要再次调用setTimeout方法这样形成一个循环调用。