本页面由 Flash 保存计划 从 Internet Archive 存档还原 · 快照 2004-12-09 · 原址 http://bbs.flash8.net/forums/1803282/ShowPost.aspx ← Flash 保存计划
欢迎光临 闪吧论坛 登录 | 注册 | FAQ | 搜索
Print Search
帖子排序:    
帖子发起人:standny   发起时间:2006-02-10 09:53 上午   回复:5
standny 离线,最后访问时间:2006-2-14 10:59:39 standny

等级:Flash1

等级:FLASH1
注册:2003-05-08
发贴:4
积分:0
2006-02-10, 09:53 上午   IP 地址:已记录  报告  收藏  楼主
关于xml.sendAndLoad的问题(发送信息到服务器后无法收到返回数据)

  • 各位高手好! 小弟第一次写AS,遇到一个奇怪的问题:

    我试图通过FLASH发送一条查询数据到同域下的一个ASP.NET文件,并接收查询结果,但是发送是成功了,却始终收不到返回结果,不知是怎么回事?下面是我的代码片断:

    loginXML = new XML();
      var loginElement:XMLNode;
      loginElement = loginXML.createTextNode(totalFileSize.toString());
      loginXML.appendChild(loginElement);
      //新建一个xml对象,用来存放从服务器返回的信息
      loginReplyXML = new XML();
      loginReplyXML.ignoreWhite=true;
      loginReplyXML.onLoad=upload;    
      loginXML.sendAndLoad("getCheckInfo.aspx?type=maxsize",loginReplyXML);

    public function upload(success:Boolean){  if (success){
       onError("sss");
       /*var reply = loginReplyXML.firstChild;
       if (reply.nodeName == "RESULT"){
        switch(reply.attributes.value) {
         case "1":
          dispatchEvent ({type:"start"});
          uploadNext ();
          break;
         case "0":
          onError(reply.attributes.errorMessage);
          break;
         default:
          onError("服务器发生未知错误,上传失败!请重试!");
          break;
        }
       }*/
      }
      else{
       onError("服务器发生未知错误,上传失败!请重试!");
      }

    ***onError是我自定义的一个输出错误信息的方法。是确定可以正确执行的!

    getCheckInfo.aspx

    private void GetMaxSize()
      {
       int maxSize=10240;
       int totalSize=0;
       
       System.Xml.XmlDocument xml=new System.Xml.XmlDocument();
       if (Request.Form.Count>0)
       {
        try
        {
         totalSize=int.Parse(Request.Form[0]);
        }
        catch
        {
         xml=new System.Xml.XmlDocument();
         System.Xml.XmlElement xmlE=xml.CreateElement("RESULT");
         xmlE.SetAttribute("value","0");
         xmlE.SetAttribute("errorMessage","请求的数据无效!");
         xml.AppendChild(xmlE);
        }
        if (totalSize>maxSize)
        {
         xml=new System.Xml.XmlDocument();
         System.Xml.XmlElement xmlE=xml.CreateElement("RESULT");
         xmlE.SetAttribute("value","0");
         xmlE.SetAttribute("errorMessage","可用空间大小不足!");
         xml.AppendChild(xmlE);
        }
        else
        {
         xml=new System.Xml.XmlDocument();
         System.Xml.XmlElement xmlE=xml.CreateElement("RESULT");
         xmlE.SetAttribute("value","1");
         xml.AppendChild(xmlE);
        }
       }
       else
       {
        xml=new System.Xml.XmlDocument();
        System.Xml.XmlElement xmlE=xml.CreateElement("RESULT");
        xmlE.SetAttribute("value","0");
        xmlE.SetAttribute("errorMessage","数据无效!");
        xml.AppendChild(xmlE);    
       }
       //System.Xml.XmlTextWriter xmlW=new System.Xml.XmlTextWriter(Response.OutputStream,System.Text.Encoding.Default);
       //xmlW.WriteStartDocument();
       //xml.WriteTo(xmlW);
       //xmlW.WriteEndDocument();
       //xmlW.Close();
       Response.Clear();
       Response.ContentType="text/xml";
       Response.Write(xml.OuterXml);
       Response.End();
      }

    调用xml.send方法后得到如下输出内容:

     <RESULT value="0" errorMessage="数据无效!" />

    我在getCheckInfo.aspx中返回一串XML格式的代码,用xml.send测试通过了的。而且我在ASPX文件中的相关代码中建立了一个新文件(用来判断是否成功接收到了FLASH的数据),在我执行了xml.sendAndLoad之后,文件建立起了,说明ASPX文件是接收到了FLASH传来的数据的。可是FLASH端的loginReplyXML.onLoad却始终没有被执行。不知道是为什么?望高手指教!!!

    standny 离线,最后访问时间:2006-2-14 10:59:39 standny

    等级:Flash1

    等级:FLASH1
    注册:2003-05-08
    发贴:4
    积分:0
    2006-02-10, 17:11 下午   IP 地址:已记录  报告  收藏  第2楼
    Re:关于xml.sendAndLoad的问题(发送信息到服务器后无法收到返回数据)

  • loginReplyXML = new XML();
    loginReplyXML.onLoad=upload;
    loginReplyXML.load("test.asp");

    public function upload(success:Boolean){
    if (success){
    ...... }
    else{
    onError("服务器发生未知错误,请重试!");
    }
    }

    **********test.asp*********
    <%response.write("<RESULT value=""1"" />")%>

    我已把程序简化到最基本的代码了,服务器端也换成了ASP的了,高手帮忙看下上面的程序片断有什么问题吗?为什么连这个都不行啊?
    koaqiu 离线,最后访问时间:2006-2-25 17:40:47 koaqiu

    等级:Flash MX


    等级:闪吧成员
    头衔:钓鱼岛岛主
    注册:2003-07-17
    发贴:3,062
    积分:92
    访问我的Blog
    2006-02-10, 17:26 下午   IP 地址:已记录  报告  收藏  第3楼
    Re:关于xml.sendAndLoad的问题(发送信息到服务器后无法收到返回数据)

  • 估计是这里的问题
    public function upload

    public删除掉

    在类里面才可以使用public

    我用你的最简代码测试通过了
    null
    附件:
    序号 附件名称 类型 文件大小 上传时间 下载次数
    1 Test.rar 压缩文件 5Kb 2006-02-10 6
    standny 离线,最后访问时间:2006-2-14 10:59:39 standny

    等级:Flash1

    等级:FLASH1
    注册:2003-05-08
    发贴:4
    积分:0
    2006-02-10, 17:46 下午   IP 地址:已记录  报告  收藏  第4楼
    Re:关于xml.sendAndLoad的问题(发送信息到服务器后无法收到返回数据)

  • 非常感谢你的帮忙,我试了一下你的附件中的代码,的确是可以的,不过我的还是不行。你刚刚说到类,我忘了说了 我上面的代码就是在一个类里面,是不是这样就会有什么问题??
    因为其实我是把他放到一个上传操作的类里面在,目的是为了检测目前正准备上传的文件是否超过剩余空间的大小。但是在我经过反复测试之后发现:
    xml.sendAndLoad发送过去的数据,服务器端是接收到了的,并作了相应的操作,可是FLASH端却好像始终都没有接收到来自服务器的返回信息,一直处于等待服务器回应中,因为我通过firefox浏览该页面时发现在执行了相关操作后,状态栏会显示“正在从www.mysite.com传送数据”。把类中的代码改为上面的简化后的代码状态仍然如此。不知为何故?
    还望再帮帮小弟
    koaqiu 离线,最后访问时间:2006-2-25 17:40:47 koaqiu

    等级:Flash MX


    等级:闪吧成员
    头衔:钓鱼岛岛主
    注册:2003-07-17
    发贴:3,062
    积分:92
    访问我的Blog
    2006-02-10, 18:04 下午   IP 地址:已记录  报告  收藏  第5楼
    Re:关于xml.sendAndLoad的问题(发送信息到服务器后无法收到返回数据)

  • 你的代码好像是从Flash帮助中 复制下来修改的

    你把loginReplyXML.onLoad=upload;
    改成 loginReplyXML.onLoad=function(success:Boolean){
    if (success){
    onError("sss");
    /*var reply = loginReplyXML.firstChild;
    if (reply.nodeName == "RESULT"){
    switch(reply.attributes.value) {
    case "1":
    dispatchEvent ({type:"start"});
    uploadNext ();
    break;
    case "0":
    onError(reply.attributes.errorMessage);
    break;
    default:
    onError("服务器发生未知错误,上传失败!请重试!");
    break;
    }
    }*/
    }
    else{
    onError("服务器发生未知错误,上传失败!请重试!");
    }


    如果还不行

    最好能把相关的flash文件后台程序文件 打包发出来

    null
    standny 离线,最后访问时间:2006-2-14 10:59:39 standny

    等级:Flash1

    等级:FLASH1
    注册:2003-05-08
    发贴:4
    积分:0
    2006-02-10, 18:10 下午   IP 地址:已记录  报告  收藏  第6楼
    Re:关于xml.sendAndLoad的问题(发送信息到服务器后无法收到返回数据)

  • 你说的方法我已经试过了,还是不行

    我是在网上下载的一个FLASH上传文件的示例代码,然后自已作了一些小修改,由于从没有学过AS,所以改得比较乱,我把他传上来你看看吧,呵呵,先谢了!

    WEB.RAR是后台程序文件,由于是.NET的,你可能需要新建一个项目并把这些文件放进去编译后才能正常执行。


    附件:
    序号 附件名称 类型 文件大小 上传时间 下载次数
    1 Web.rar 压缩文件 4Kb 2006-02-10 4
    2 fla.rar 压缩文件 268Kb 2006-02-10 7
    快速回复帖子

     




    标题: