创建一个Asp文件,命名为newreply.asp,并增加如下的内容:
<%
Set MyFileObject = Server.CreateObject("Scripting.FileSystemObject") ‘注释1
Set MyTextFile = MyFileObject.CreateTextFile("G:\写作\flashxmlbbs\login.xml", 8, TRUE)
MyTextFile.WriteLine(Request.Form)
set objDom = server.CreateObject("microsoft.xmldom") ‘注释2
objDom.loadxml(Request.Form)
set objID = objdom.documentElement.SelectSingleNode("//NEW/ID") ‘注释3
id = objID.text
set objTitle = objdom.documentElement.SelectSingleNode("//NEW/TITLE")
Title = objTitle.text
set objAuthor = objdom.documentElement.SelectSingleNode("//NEW/NAME")
Author = objAuthor.text
set objContent = objdom.documentElement.SelectSingleNode("//NEW/FILE")
Content = objContent.text
'判断
set conn=Server.CreateObject("ADODB.Connection") ‘注释4
conn.open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("/xmlbbs/xmlbbs.mdb")
sqltemp="insert into FileInfo (title,author,fid,content) values ('" & Title & "','" & Author & "'," & id & ",'" & Content & "')" ‘注释5
conn.Execute(sqltemp)
conn.close
'返回
response.write("<BACK flag1=""1""></BACK>") ‘注释6
%>
注释1:创建临时文件,以便在服务器端留下调试的痕迹。
注释2:创建一个XML对象。
注释3:分别读取ID、TITLE、NAME、FILE结点的内容。
注释4:创建一个数据库的ADO连接。
注释5:构造插入数据的SQL语句。
注释6:返回所构造的XML格式字符串。
六、删除
删除,就是在服务器端接收从Flash端的ID号,在数据库中删除相应的记录,并返回XML格式的结果。
A、传递的XML
1、请求报文
<DEL><ID>要删除的ID号</ID></DEL>
2、响应报文
<BACK flag1="1"></BACK>
B、Flash端
1、返回场景的第三帧,在场景中增加一个显示内容为“删除”的按钮,并在此Button的Action Script面板上面增加如下语句:
on(release){
delXml = new XML(); file://注释1
delElement = delXml.createElement("DEL"); file://注释2
idElement = delXml.createElement("ID"); file://注释3
idNode = delXml.createTextNode("id");
idNode.nodeValue = _root.fileNowId;
idElement.appendChild(idNode); file://注释4
delElement.appendChild(idElement);
delXml.appendChild(delElement);
delRepley = new XML(); file://注释5
delRepley.onLoad = onDelReply;
function onDelReply (delsuccess) {
if (delsuccess) {
}
}
delXml.sendAndLoad("http://localhost/xmlbbs/del.asp", delRepley); file://注释6
}
注释1:创建一个XML对象。
注释2:创建DEL结点对象。
注释3:创建ID结点对象,并添加内容。
注释4:将所创建的结点对象添加到XML对象中去。
注释5:创建响应的XML对象。
注释6:向服务器端发送XML对象,并接收返回的结果。
C、Asp端
<%
Set MyFileObject = Server.CreateObject("Scripting.FileSystemObject") ‘注释1
Set MyTextFile = MyFileObject.CreateTextFile("G:\写作\flashxmlbbs\login.xml", 8, TRUE)
MyTextFile.WriteLine(Request.Form)
set objDom = server.CreateObject("microsoft.xmldom") ‘注释2
objDom.loadxml(Request.Form)
set objid = objdom.documentElement.SelectSingleNode("//DEL/ID") ‘注释3
id = objid.text
'判断
set conn=Server.CreateObject("ADODB.Connection")
conn.open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("/xmlbbs/xmlbbs.mdb")
set rs=Server.CreateObject("ADODB.Recordset")
sqltemp="delete from FileInfo where id=" & id & " or fid = " & id ‘注释4
conn.Execute(sqltemp)
conn.close
'返回
response.write("<BACK flag1=""1""></BACK>") ‘注释5
%>
注释1:构造一个临时文件,向里面写传送的内容,以便调试。
注释2:根据Flash端的XML字符串构造一个XML对象。
注释3:取得ID结点的内容。
注释4:构造一个删除的SQL字符串。
注释5:向Flash端返回所构造的XML字符串。
七、小结
本实例实现了一个论坛的框架,主要涉及在Flash与Asp之间XML对象的解释和XML字符串的传送。如果对此原理还不清晰,可以参考前一篇文章。
本文所实现的例子,对编程功底比较薄弱的朋友来说,可能有点难度,可以结合源文件,试多几次,一定要有耐心。如果有什么提议或是更好的实现方法,可以给我写E-mail:[email protected]
FAQ附录:
1、开发环境介绍
本文在windows advance server 2000 + IIS 5.0 + 记事本 + Flash MX 2004环境下面开发。
2、asp中是如何解释XML的
利用Microsoft提供的MS XML包,可以很方便的解释和生成XML对象。
3、Flash中是如何发送XML对象的?
Flash中的sendAndLoad()函数是用POST方法向服务器端发送XML对象的,所以在Asp端可以用Request.Form来取得所发送的XML格式的字符串。将所传送的XML对象写在临时文件里面,是一种非常有效的调试方法。
4、本文用到的数据库中的数据格式
本文用的是Access 2000数据库,用到了两个表:
UserInfo表:ID、username、userpwd、userright
FileInfo表:ID 、title、author、fid、content