用Flash和XML构建论坛实例(4)

C、Asp端

  创建一个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

你可能感兴趣的:(Flash)