WEB页面中,如何更新XML数据岛
在页面中设置XML数据岛,作为table的数据源,table中每个td中有
<input type=text>其DATAFLD设置为XML数据岛的字段域,我增加数据行输入数据后提交,发现服务器得到的XML数据岛内容是空的,怎么办
问题点数:100、回复次数:7Top
1 楼xzq686(★_瞬_★)回复于 2004-04-02 16:21:02 得分 20
数据岛就用于html的例子。
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=gb2312"> <title>我是中国人</title>
</head>
<body>
<xml id="II">
<我是中国人>
<姓名>孙继海</姓名>
<姓别>男</姓别>
<年龄>26</年龄>
</我是中国人>
</xml>
<center><h1>我是中国人</h1></center>
<!--
注意:下面table属性里的datasrc="#II"必须有,是数据岛的id
-->
<table border="0" datasrc="#II" align="center" width="443">
<tr>
<td bgcolor="#99FF99">姓名: <span datafld="姓名"></span></td>
<td bgcolor="#3399CC">姓别: <span datafld="姓别"></span></td>
<td bgcolor="#CC99CC">年龄: <span datafld="年龄"></span></td>
</tr>
</table>
</body>
</html>Top
2 楼net_lover(【孟子E章】)回复于 2004-04-03 08:31:05 得分 0
不会的。你在前端输入的时候已经变了,你提交后必须进行保存【数据库或者xml】,然后重新转向到该页面Top
3 楼net_lover(【孟子E章】)回复于 2004-04-03 08:36:43 得分 10
http://www.ccw.com.cn/pub/ChFileSubmit.asp?tablename=TFileCcwNet&recordno=42608Top
4 楼oydj(东)回复于 2004-04-04 14:23:32 得分 10
http://www.cnsxml.com/blogview.asp?logID=155
《用XML数据岛解决用户界面问题 》Top
5 楼steven2000(大菜虫)回复于 2004-04-05 10:22:04 得分 0
可能行文不清楚
我的意思是如何把改变的数据岛内容随页面其他内容提交到服务器,也就是在服务器的Request中如何得到数据岛的数据Top
6 楼dullwolf(超级大笨狼之羊皮马甲)回复于 2004-07-04 03:53:53 得分 0
用xmlhttp提交,不要用form提交。Top
7 楼dullwolf(超级大笨狼之羊皮马甲)回复于 2004-07-04 03:59:11 得分 60
利用XMLHTTP优化数据传输
孟宪会
2002-10-21 14:32:21
--------------------------------------------------------------------------------
在Web应用中,我们经常会需要记录客户端的状态,如果浏览器支持Cookie的功能,这样很好办,但如果用户禁止了Cookie功能,该如何记录客户端的信息呢?当我们提交新录或修改的数据时,我们希望只提交录
入的数据信息而不提交与之无关的其它信息,利用XML数据岛和XMLHTTP可以轻松实现。一个比较理想的方法就是把INPUT和SELECT等控件绑定到XML数据岛,实际上,如果有更复杂的表单元素时,我们还可以利用XPATH进行处理,这样可以进行更加复杂的操作。利用XMLHTTP可以只提交数据信息,这样也可以减少网络流量。
下面就是简单的例子xmlhttpTest.htm:
<body>
<XML id="xmlTest">
<?xml version="1.0"?>
<root>
<Customer>
<customerid>00001</customerid>
<name>孟子E章</name>
<phone>13910309***</phone>
<address>北京市海淀区信息路</address>
<description><![CDATA[<html><body>支持html代码</body></html>]]></description>
</Customer>
</root>
</XML>
<script>
function update()
{
var oXmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
'这里换成你自己的ServerName和VirtualDir
oXmlHttp.Open("POST", "http://mengxianhui/asp/update.asp", false);
oXmlHttp.setRequestHeader("Content-Type","text/xml")
oXmlHttp.Send(xmlTest.xml);
if(oXmlHttp.status!="200")
{
alert("没有返回正确的数据类型。")
return false
}
xmlTest.loadXML(oXmlHttp.responseXML.xml);
}
</script>
<table align="center" cellspacing="6" style="font-size:11pt">
<FORM NAME="frmTest">
<tr>
<td>客户名称:</td>
<td><INPUT TYPE="text" dataSrc="#xmlTest" dataFld="name" style="width:400px"></td>
</tr>
<tr>
<td>客户电话:</td>
<td><INPUT TYPE="text" dataSrc="#xmlTest" dataFld="phone" style="width:400px"></td>
</tr>
<tr>
<td>客户地址:</td>
<td><INPUT TYPE="text" dataSrc="#xmlTest" dataFld="address" style="width:200px"></td>
</tr>
<tr>
<td>客户简介:</td>
<td>
<TEXTAREA dataSrc="#xmlTest" dataFld="description" rows="6" style="width:400px"></TEXTAREA>
</td>
</tr>
<tr>
<td colspan="2" align="center">
<INPUT TYPE="button" onclick="update()" VALUE=" 确 定 " style="background-color:#6F7EEF">
</td>
</tr>
</FORM>
</table>
</body>
这个HTML页面提供了一个数据岛来保存用户的信息,利用dataSrc和dataFld属性分别与Form表单元素进行绑定。XML数据岛将会实时反映出表单元素中数据的变化。通过点击“确定”按钮,将会调用update()函数,利用XMLHTTP把数据提交到服务器,同时利用XML数据岛的一个节点customerid来记录正在编辑的记录的状态。
下面就是简单的接收数据的代码update.asp:
<%
Dim xmldom
Set xmldom = Server.CreateObject("MSXML.DOMDocument")
Response.ContentType = "text/xml"
Response.CharSet = "GB2312"
xmldom.load Request
'可以在这里进行处理,然后返回到客户端
Response.Write "<?xml version=""1.0"" encoding=""GB2312""?>"
Response.Write xmldom.documentElement.xml
Set xmldom = Nothing
%>
如果只是测试,可以利用下面的代码update2.asp
<%
Response.ContentType = "text/xml"
Response.CharSet = "GB2312"
Response.Write "<?xml version=""1.0"" encoding=""GB2312""?>"
Response.Write "<root><Customer><customerid></customerid>"
Response.Write "<name>net_lover</name><phone>010-817939**</phone>"
Response.Write "<address>中国北京国际创业园</address>"
Response.Write "<description><![CDATA[<html><body>这种方式也支持HTML啊^_^</body></html>]]></description>"
Response.Write "</Customer></root>"
%>
一旦XML数据提交到服务器后,XML数据将保存到Request对象中,这样,我们可以把数据装载到XML DOM对象,利用XMLDOM对象的方便性进行各种处理,比如保存到数据库等,然后把结果返回到客户端。
其实,最实用的时候是把提交上来的XML数据交给Microsoft SQL Server 2000 来处理,在Microsoft SQL Server 2000 中进行数据的更新。
下面是利用Microsoft SQL Server 2000 来处理数据的例子update3.asp
Dim conn, cmd
Set conn = Server.CreateObject("ADODB.Connection")
Set cmd = Server.CreateObject("ADODB.Command")
conn.ConnectionString = "连接字符串写这里"
conn.Open
Set cmd.ActiveConnection = conn
cmd.CommandText = "update_stored_procedure" '调用存储过程
cmd.CommandType = 4
cmd.Parameters.Append cmd.CreateParameter("@xmldata", 200, 1, 8000, oXML.xml)
cmd.Properties("Output Stream") = Response 'IIS 5.0+支持
Response.Write "<root>"
cmd.Execute , ,1024
Response.Write "</root>"
在默认情况下,服务器端返回的是UTF-8格式的数据,为了避免乱码,在update.asp中,有一句Response.Write "<?xml version=""1.0"" encoding=""GB2312""?>",利用这句的输出,就可以避免因中文输出带来的乱码问题。另外,利用XMLHTTP提交,页面是不刷新的,也可以减少数据传输的流量。
Top




