四、发表新主题

  发表新主题,即是在服务器端接收从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对象,并接收返回的结果。

posted on 2006-08-14 19:28  榻榻米  阅读(274)  评论(0)    收藏  举报