快精灵印艺坊 您身边的文印专家
广州名片 深圳名片 会员卡 贵宾卡 印刷 设计教程
产品展示 在线订购 会员中心 产品模板 设计指南 在线编辑
 首页 名片设计   CorelDRAW   Illustrator   AuotoCAD   Painter   其他软件   Photoshop   Fireworks   Flash  

 » 彩色名片
 » PVC卡
 » 彩色磁性卡
 » 彩页/画册
 » 个性印务
 » 彩色不干胶
 » 明信片
   » 明信片
   » 彩色书签
   » 门挂
 » 其他产品与服务
   » 创业锦囊
   » 办公用品
     » 信封、信纸
     » 便签纸、斜面纸砖
     » 无碳复印纸
   » 海报
   » 大篇幅印刷
     » KT板
     » 海报
     » 横幅

在基于MOZILLA的浏览器中使用XMLHTTPREQUEST对象

IE通过答应开发人员在Web页面内部使用安全的ActiveX组件扩展自身的功能。微软在无状态连接方面的产品是XMLHTTP组件。

使用XMLHTTP组件,开发人员可以不用从当前的Web页面导航而直接传输数据到服务器上或者从服务器取数据。这个功能是重要的,因为它帮助减少了无状态连接的痛苦。它还可以排除下载冗余HTML的需要,从而提高进程的速度。

Mozilla做出的回应是创建它自己的继续XML代理类:XMLHttpRequest类。对于大多数情况,XMLHttpRequest对象的行为很像XMLHTTP组件。这就意味着你可以使用很多与XMLHTTP组件一样的帮助信息。方式和属性类似,然而,所有的方式和属性都是以小写字母开头,并且还有一些属性不支持。

下面是一个使用eXtensible Binding Language(XBL)将一个行为绑定到一个<INPUT>元素来更新XML数据岛的简朴例子。数据被发送到服务器处理。

xml_http.asp:

<%@ Language=VBScript %>
<%
Response.Expires = -1
If Request("action") = "update" Then
Dim xml
Set xml = Server.CreateObject("MSXML2.DOMDocument")
xml.load Request
Response.Writexml.xml
Set xml = Nothing
Response.End
End If
%>
<html>
<head>
<style>
.linkedData {
-moz-binding: url(link_data.xml#link);
}
</style>
<script language="JavaScript">
<!--
function test() {
var xml = document.getElementById("xmlData");
if (xml != null) {
varxmlhttp = new XMLHttpRequest();
xmlhttp.open("POST", "xml_http.asp?action=update", false);
xmlhttp.send(xml.innerHTML);
alert(xmlhttp.responseText);
}
}
//-->
</script>
</head>
<body>

<xml id="xmlData" name="xmlData" style="visibility:hidden;">
<root>
<link_data/>
</root>
</xml>

<form id="thisForm" name="thisForm">

<input type="text" class="linkedData" name="txtLink" id="txtLink" size="25">
<br>
<input type="button" value="Test" onclick="test()">

</form>

</body>
</html>

link_data.xml:

<?xml version="1.0"?>
<xbl:bindingsxmlns:xbl="http://www.mozilla.org/xbl">
<xbl:binding id="link">
<xbl:handlers>
<xbl:handler event="change">
var xml = document.getElementById("xmlData");
var root = xml.childNodes[1];
varlink_data = root.childNodes[1];
link_data.childNodes[0].nodeValue = event.originalTarget.value;
</xbl:handler>
</xbl:handlers>
</xbl:binding>
</xbl:bindings>



xml_http.asp文件创建一个XML数据岛,创建的数据岛有一个重要节点:link_data。而且,这个HTML的表现会创建一个文本框和一个用于创建发送XML数据给服务器的事件的按钮。

IE答应你嵌入XML数据岛并使用那个数据岛将绑定HTML元素到底层的数据。Mozilla靠XBL为每个元素创建行为。使用XBL,你可以为<INPUT>元素创建一个行为,所以在onChange事件发生时,“bound”XML节点就能够被更新。“linkedData”样式类通知Mozilla文件link_data.xml将要被用来创建绑定。这个类是在<INPUT TYPE=”text” … >元素中使用的。

假如你分析link_data.xml的代码,你会注重到onchange事件处理程序只是简朴地获取XML数据岛的link_data节点然后更新text节点的值。对于这个解决方案这是一个异常简朴的方式;它只在文本框中的值有改动之后才会更新数据。这不属于two-way绑定机制,因为假如节点的值改变了,其改变不会反映到文本框。

当用户点击Test按钮的时候,希奇的事情发生了。一个新的XMLHttpRequest对象被创建用来向服务器改善XML数据。然后,就像XMLHTTP组件在IE中的工作方法相同,你使用open()方式打开远程页面。在这个例子中,我添加了一个查询字符串到xml_http.asp页面中,所以我可以使用同一个页面处理XML传输。使用send()方式,我传递xmlData数据岛的innerHTML。(在IE中,这与指定xmlData数据岛的XML属性相同)。

在xml_http.asp页面被装载时,它检查“action”参数是否传递给页面,并且那个参数是否等于“update”。假如是――就是在我们发出XMLHttpRequest哀求的时候――它创建一个DOMDocument组件,从Request对象装载XML,然后返回DOMDocument的xml。Request对象暴露出IStream接口,答应DOMDocument直接从Request对象装载xml。(在另外一种语言中,你可以使用从HTTP哀求中发送过来的POST数据。)

这是一个异常简朴的例子,说明了Mozilla的XML能力。在Mozilla中操作XML的其中一个缺点就是文档不怎么样。不过上面已经提到过,对于绝大多数部分,你可以使用针对微软的XMLHTTP组件的文档。
返回类别: 教程
上一教程: 如何用ASP编写网站统计系统二
下一教程: 简朴验证码的生成及显示

您可以阅读与"在基于MOZILLA的浏览器中使用XMLHTTPREQUEST对象"相关的教程:
· 如何知道使用者所用的浏览器
· SESSION对象在各浏览器中的有效范围
· 关于在浏览器中执行*.EXE文件的深入探讨!
· 用ASP开发基于浏览器的文档数据库治理软件
· 如何在ADO中使用CONNECTION 对象什么是CONNECTION对象
    微笑服务 优质保证 索取样品