Your Ad Here
首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 网站建设 > 网页制作 > 用Flash和XML构建论坛实例(下)
【标  题】:用Flash和XML构建论坛实例(下)
【关键字】:XML,实例,Flash,论坛,Flash,XML
【来  源】:网络

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

Your Ad Here

  四、发表新主题

  发表新主题,即是在服务器端接收从Flash端发送来XML格式的文章内容,保存到数据库中,并返回XML格式的结果。

  A、传递的XML

  1、请求报文

 <NEW><ID>0</ID><TITLE>标题</TITLE><NAME>作者名字</NAME><FILE>文章正文</FILE></NEW>

  2、响应报文

 <BACK flag1="1"></BACK>

  B、Flash端

  1、在场景的第四帧上面创建一个关键帧,标签为“new”,在帧的Action Script面板上面增加如下语句:

  stop();

  2、在第四帧的场景中用文本工具拉两个文本框,类型都为Input type,var变量名分别为“newTitle”、“newfile”。

  3、在第四帧的场景里面创建一个按钮显示的内容为“发表新文”,在此Button的Action Script上增加如下的语句:

 on (release) {
if (_root.newTitle != "") { file://注释1
newXml = new XML(); file://注释2
newElement = newXml.createElement("NEW"); file://注释3
file://new id node
newidElement = newXml.createElement("ID"); file://注释4
newidNode = newXml.createTextNode("id");
newidNode.nodeValue = "0";
newidElement.appendChild(newidNode);
file://new title node
newTilteElement = newXml.createElement("TITLE"); file://注释5
newTilteNode = newXml.createTextNode("title");
newTilteNode.nodeValue = _root.newTitle;
newTilteElement.appendChild(newTilteNode);
file://new name node
newNameElement = newXml.createElement("NAME"); file://注释6
newNameNode = newXml.createTextNode("name");
newNameNode.nodeValue = _root.username;
newNameElement.appendChild(newNameNode);
file://new file node
newFileElement = newXml.createElement("FILE"); file://注释7
newFileNode = newXml.createTextNode("file");
newFileNode.nodeValue = _root.newfile;
newFileElement.appendChild(newFileNode);
newElement.appendChild(newidElement); file://注释8
newElement.appendChild(newTilteElement);
newElement.appendChild(newNameElement);
newElement.appendChild(newFileElement);
newXml.appendChild(newElement);
newRepley = new XML(); file://注释9
newRepley.onLoad = onNewReply;
function onNewReply(newsuccess) {
if (newsuccess) {
if (newRepley.firstChild.attributes.flag1 == "1") { file://注释10
_root._root.gotoAndPlay("main");
}
}
}
newXml.sendAndLoad("http://localhost/xmlbbs/newfile.asp", newRepley); file://注释11
}
}
 
  注释1:标题的内容要非空。
  注释2:创建一个XML对象。
  注释3:创建一个NEW结点。
  注释4:创建一个ID结点。
  注释5:创建一个TITLE结点。
  注释6:创建一个NAME结点。
  注释7:创建一个FILE结点。
  注释8:将创建的结点都添加到XML对象中去。
  注释9:创建响应的XML对象。
  注释10:判断返回的结果。
  注释11:向服务器端发送XML对象,并接收返回的结果。

  C、Asp端

 <%
Set MyFileObject = Server.CreateObject("Scripting.FileSystemObject") ‘注释1
Set MyTextFile = MyFileObject.CreateTextFile("G:\写作\flashxmlbbs\login.xml", 8, TRUE)
MyTextFile.WriteLine(Request.Form) ‘注释2

set objDom = server.CreateObject("microsoft.xmldom")
objDom.loadxml(Request.Form) ‘注释3
set objID = objdom.documentElement.SelectSingleNode("//NEW/ID") ‘注释4
id = objID.text
set objTitle = objdom.documentElement.SelectSingleNode("//NEW/TITLE") ‘注释5
Title = objTitle.text
set objAuthor = objdom.documentElement.SelectSingleNode("//NEW/NAME") ‘注释6
Author = objAuthor.text
set objContent = objdom.documentElement.SelectSingleNode("//NEW/FILE") ‘注释7
Content = objContent.text

'判断
set conn=Server.CreateObject("ADODB.Connection") ‘注释8
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 & "',0,'" & Content & "')" ‘注释9
conn.Execute(sqltemp)
conn.close

'返回
response.write("<BACK flag1=""1""></BACK>") ‘注释10
%>
 
  注释1:创建一个临时文件对象。

  注释2:将从Flash端传过来的XML字符串写到临时文件中,以方便调试。

  注释3:用Flash端传送来的XML字符串构造一个XML对象。

  注释4:读取//NEW/ID结点中的内容。

  注释5:读取//NEW/TITLE结点中的内容。

  注释6:读取//NEW/NAME结点中的内容。

  注释7:读取//NEW/FILE结点中的内容。

  注释8:创建一个数据库的ADO连接。   注释9:构造一个插入数据库的SQL语句。

  注释10:返回构造的XML格式的字符串到Flash端。

  五、回复主题

  回复主题,即是在服务器端接收从Flash端发送来XML格式的回复内容,保存到数据库中,并返回XML格式的保存结果。

  A、传递的XML

  1、请求报文

 <NEW><ID>所回复的ID号</ID><TITLE>标题</TITLE><NAME>作者名字</NAME><FILE>文章正文</FILE></NEW>

  2、响应报文

 <BACK flag1="1"></BACK>

  B、Flash端

  1、在场景的第五帧上面创建一个关键帧,标签为“reply”,在帧的Action Script面板上面增加如下语句:

 stop();

  2、在第五帧的场景中用文本工具拉两个文本框,类型都为Input type,var变量名分别为“replyTitle”、“replyfile”。

  3、在第五帧的场景里面创建一个按钮显示的内容为“回复”,在此Button的Action Script上增加如下的语句:

 on (release) {
if (_root.replyTitle != "") { // 注释1
newXml2 = new XML(); // 注释2
newElement2 = newXml2.createElement("NEW"); // 注释3
file://new id node
newidElement2 = newXml2.createElement("ID");
newidNode2 = newXml2.createTextNode("id");
newidNode2.nodeValue = _root.fileNowId;
newidElement2.appendChild(newidNode2);
file://new title node
newTilteElement2 = newXml2.createElement("TITLE");
newTilteNode2 = newXml2.createTextNode("title");
newTilteNode2.nodeValue = _root.replyTitle;
newTilteElement2.appendChild(newTilteNode2);
file://new name node
newNameElement2 = newXml2.createElement("NAME");
newNameNode2 = newXml2.createTextNode("name");
newNameNode2.nodeValue = _root.username;
newNameElement2.appendChild(newNameNode2);
file://new file node
newFileElement2 = newXml2.createElement("FILE");
newFileNode2 = newXml2.createTextNode("file");
newFileNode2.nodeValue = _root.replyfile;
newFileElement2.appendChild(newFileNode2);
newElement2.appendChild(newidElement2); // 注释4
newElement2.appendChild(newTilteElement2);
newElement2.appendChild(newNameElement2);
newElement2.appendChild(newFileElement2);
newXml2.appendChild(newElement2);
newRepley2 = new XML(); // 注释5
newRepley2.onLoad = onNewReply2;
function onNewReply2(newsuccess2) {
if (newsuccess2) {
if (newRepley2.firstChild.attributes.flag1 == "1") { // 注释6
_root.gotoAndPlay("main");
}
}
}
newXml2.sendAndLoad("http://localhost/xmlbbs/newreply.asp", newRepley2); file://注释7
}
}
 
  注释1:回复时,标题要有内容。

  注释2:创建一个XML对象。

  注释3:分别创建各个结点对象,并填充内容。

  注释4:将所创建的结点添加到XML对象中去。

  注释5:创建一个响应的XML对象。

  注释6:根据响应返回的内容作判断。

  注释7:向服务器端发送XML对象,并接收返回的结果。

  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:zengyu111@sohu.com

  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和XML构建论坛实例(上):【上一篇】
《小和尚》系列制作全过程解析:【下一篇】
【相关文章】
  • Flash MX 2004新特性实例学习五
  • Flash MX 2004新特性实例学习四
  • Flash MX 2004新特性实例学习三
  • Flash MX 2004新特性实例学习二
  • Flash MX 2004新特性实例学习一
  • Flash MX 2004 支持的HTML标签
  • Flash MX 2004 中的文本遮罩
  • Flash MX 2004 支持的 css
  • 关于Flash中linkage的loading问题
  • Flash播放尽在掌握
  • 【随机文章】
  • 怒批中国现代家长七宗罪!
  • 宋楚瑜在清华大学演讲(全文)
  • 文件描述符(fd)
  • [数据结构]八皇后问题求解(递归与非递归形式)
  • FreeBSD 磁盘管理
  • 是谁劫持了浏览器?到底是助手还是敌人
  • 执行脚本中事件的方法之六
  • 2 词法约定
  • 六种设置方法彻底优化IE浏览器
  • 基于PHP的聊天室
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 bbb软讯网络 All Rigths Reserved.