AJax技术

在domino中使用Ajax教程

字号+ 作者:H5之家 来源:H5之家 2017-04-12 15:04 我要评论( )

lotus/Domino 中应用xml 异步读取数据 W3C已经指定了一个XML的标准文档对象模型。DOM是用于HTML和XML文档的程序开发接口,它能够让开发者访问和操作一个文档。开

lotus/Domino 中应用xml 异步读取数据


W3C已经指定了一个XML的标准文档对象模型。DOM是用于HTML和XML文档的程序开发接口,它能够让开发者访问和操作一个文档。开发者可以使用DOM建立和浏览文档。有很多可利用的方法和属性,如下表所示:

* Basename:返回一个节点的名称。

* childNodes:返回包含选择节点的所有子节点的列表。

* lastChild:返回当前节点的最后子节点。

* nextSibling:返回当前节点之后的一个节点。如果二者是同一父母,则它们为同胞关系。

* parentNode:返回一个节点的父母节点。如果是根节点,则返回Null。

* text:返回一个节点及其子节点的文本内容。

* xml:返回一个节点及其子节点的XML内容。

* hasChildNodes:对一个节点是否包含子节点,返回相应的true或false。

* nextNode:返回一个集合的下一节点。

* previousNode:返回一个集合的前一节点。

* selectNodes:返回与特定模式匹配的包含所有节点的一个NodeList对象。

* selectSingleNode:返回与特定模式匹配的第一个子节点的节点对象。

 

在domino中的应用举例:

1.在test.nsf 库中写一个getxml代理

Sub Initialize

Dim xmlStr As String

xlmStr=|<?xml version="1.0" encoding="GB2312" standalone="yes"?><root>|

xlmStr=xlmStr & |<item><name>刘亦菲1</name><url>MingXing/LiuYiFei.htm</url><color>7A9D4B</color></item>|

xlmStr=xlmStr & |<item><name>蔡依林</name><url>MingXing/CaiYiLin.htm</url><color>FD0000</color></item>|

xlmStr=xlmStr & |<item><name>张娜拉</name><url>MingXing/ZhangNaLa.htm</url><color>7A9D4B</color></item>|

xlmStr=xlmStr & |<item><name>张韶涵</name><url>MingXiang/ZhangShaoHan.htm</url><color>0000FF</color></item>|

xlmStr=xlmStr & |<item><name>张靓颖</name><url>MingXing/ZhangLiangYin.htm</url><color>7A9D4B</color></item>|

xlmStr=xlmStr & |<item><name>李宇春</name><url>MingXing/LiYuChun.htm</url><color>7A9D4B</color></item>|

xlmStr=xlmStr & |</root>|

Print "content-type:text/xml;charset=GB2312"

Print xlmStr

End Sub

 

2.表单中加上以下js代码

<script language="javascript" type="text/javascript">

var xmlHttp;

//创建一个XmlHttpRequeset对象

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("POST", ":81/test/test.nsf/getxml?openagent", true); //提交代理请求

xmlHttp.Send(null);

}

 

function handlestatechange(){

if(xmlHttp.readyState == 4){//描述一种"已加载"状态;此时,响应已经被完全接收。

if(xmlHttp.status == 200){//200表示成功收到

var xmldoc = xmlHttp.responseXML;

var node1 = xmldoc.selectSingleNode('root/item/name');//返回与特定模式匹配的第一个子节点的节点对象

var node2=xmldoc.selectNodes("root/item");//返回与特定模式匹配的包含所有节点的一个NodeList对象

var txt;

for(i=0;i<node2.length;i++){

if(node2!=null){

var childNode=node2[i].childNodes; //返回包含选择节点的所有子节点的列表

txt=childNode[0].text+";"+childNode[1].text+";"+childNode[2].text; //返回一个节点及其子节点的文本内容,每个item有三个子节点:name,url,color三个。

}

alert(txt);

}

}

}

}

</script>

 

调用js函数:

<body text="#000000" bgcolor="#FFFFFF">

<input type="button" onClick="startRequest()" name="Submit" value="提交">

</body>

 

自己分析体会:

看看startRequest函数。我们发现xmlHttp.onreadystatechange指向了一个函数,这个函数是在xmlHttpRequest.readyState发生改变的时候触发。我们再来看startRequest函数,想象一下整个请求发送的步骤。现在我们点击一个按钮,触发了一个startRequest函数。函数往下走,第一步是createXmlHttpRequest(),它的作用是创建一个xmlHttpRequest对象,当它完毕的时候,xmlHttpRequest.readyState的值是0(window.alert跟踪得到的),程序继续往下走,xmlHttp.onreadystatechange = handlestatechange,因为状态没有改变(xmlHttpRequest.readyState的值是0),所以不触发函数,紧接着是Open()和Send(),那么,整个函数从头到尾都应该没有触发handlestatechange函数啊,但是为什么出来的结果是正确的呢?

后来我用window.alert跟踪xmlHttp.readystate的变化,发现于原来它运行的机制是这样的。首先创建一个xmlHttpRequest的对象之后xmlHttp.readyState的值是0了,然后xmlHttp.onreadystatechange = handlestatechange没有运行。紧接着是open(),这个函数发生了之后xmlHttp.readyState的值是1了,那么就会有一个断点在Open()函数处断开,保留现场,紧接着又返回到xmlHttp.onreadystatechange = handlestatechange运行,然后再执行Send()函数,这个函数发生了之后xmlHttp.readyState的值是2了,接着又返回到xmlHttp.onreadystatechange = handlestatechange运行。以此类推。

 

=====================================

 

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • Ajax完整教程--Ajax 中的高级请求和响应

    Ajax完整教程--Ajax 中的高级请求和响应

    2017-04-12 15:01

  • PHP+Ajax 检测网络能否正常实例详解

    PHP+Ajax 检测网络能否正常实例详解

    2017-04-11 14:02

  • 全面掌握ajax教程

    全面掌握ajax教程

    2017-04-11 14:01

  • Ajax基础详解教程(一)

    Ajax基础详解教程(一)

    2017-04-09 12:01

网友点评
p