各位大虾,搞了半天还是差那么一点没搞出来 先讲一下我的思路吧, 假设在编辑器中做一个按钮(插入图片),就弹出一个页面(我之前做的上传图片到服务器的页面C#),上传完之后,返回一个图片路径的值 于是编辑器中就可以显示<img src="图片在服务器上的路径"....> 要的就是这种效果 想法就是在upload.aspx中上传图片后记录下路径,在传给在线编辑器,请问怎么传和怎么接收? 各位大虾也可以讲讲自己的思路呀,小弟在此先谢过了!

解决方案 »

  1.   

    用ajax异步传输,或者纯javascript + xml实现
      

  2.   

    点击上传后
    //建立一个xmlDocumnet的对象  function  creatDomDocument()
      {
          //将一个新的ActiveXObject对象示例为一个Msxml2.DOMDocument.3.0的对象类型    
          var xmlDoc = new ActiveXObject("Msxml2.DOMDocument.3.0");
          
          //声明async的属性为fasle,即同步加载xml文档
          xmlDoc.async = true;
          
          //如果调用函数时有参数
          if(arguments.length > 0)
             xmlDoc.loadXML(arguments[0]); //把第一个参数以xml的形式存储到xmlDoc对象中,且必须符合xml格式
             
          return xmlDoc; //返回xmlDoc对象
      }
      
      var innerXmlHttp = null;
      
      function XmlSend(StrURL,xmlDoc,bAsync)
      {
          //创建了一个Msxml2.DOMDocument.3.0的对象,它是一个COM对象,它为客户机与Http服务器的交互提供了一种方法
          var innerXmlHttp = new ActiveXObject("Msxml2.XMLHTTP.3.0");
          
          //调用open方法,传递三个参数"Post",StrURL(要请求的aspx的页面),bAsync(表示调用同步或者异步方式)
          
          innerXmlHttp.open("POST",StrURL,bAsync);
          
          if(bAsync)
          {
              innerXmlHttp.onreadystatechange = StateChange;
          }
          innerXmlHttp.send(xmlDoc);
          
          if(!bAsync)
          {
              if(innerXmlHttp.responseXML.xml.length > 0)
                 return innerXmlHttp.responseXML;
              else
                 return creatErrorXML(innerXmlHttp.responseText,"");
          }
      }
      
      function StateChange()
      {
          if(innerXmlHttp.readyState == 4)
          {
              // Result中存有上传后的图片地址和上传是否成功的状态信息
              var Result = innerXmlHttp.responseXML;
              
              // 解析这个xml文件得到后台返回上传成功的结果后
               // 把解析到的结果用js赋值给编辑器
          }
      }这里是后台代码
    protected void Page_Load(object sender, EventArgs e)
        { 
            //(1)把请求的流装换为XmlDocument
            XmlDocument xmlDoc = new XmlDocument();
            xmlDoc.Load(Request.InputStream);        //(2)分析请求,获得请求,并把获得的请求放入一个xml中中
            XmlDocument xmlPicInfo = newXmlDocument();
           xmlPicInfo = 调用一个方法,上传图片并把图片路径和上传成功与否信息
                           放在一个xml中;        //(3)返回数据
            XmlDocument xmlResult = new XmlDocument();
            xmlResult.LoadXml(你生成的存有结果的xml文件);
            Response.ContentType = "text/xml";
            xmlResult.Save(Response.OutputStream);
            Response.End();
            
        }
    这样做虽然麻烦,不过能让你更深刻的理解ajax异步传输的机制预祝国庆节快乐!~~
      

  3.   

    在aspx页面中用一个按钮调用js函数<script type="txt/javascript">
    function UploadClick()
    {
        var xmlDoc = creatDomDocument("<node>"+ TxtID +"</node>");
                
        var xmlResult = XmlSend("Request.aspx",xmlDoc,true);    // 这个xmlResult就是上面的XmlSend函数中返回的结果
        // 在这里对xml对象用xpath解析然后在紧系赋值就可以了
        
    }
    </script>
    <input type="button" value="上传文件" onclick="UploadClick()"/>我的思路就是这样,如果嫌麻烦,可以直接引用那些开源的ajax,比如jquery,ajaxpro等等希望对你有帮助~
      

  4.   

    如果在线编辑器里面有个图片<img src="http://www.sina.com.cn/akjsh/asja.jpg" />那我怎么把这个远程图片保存下来,然后修改图片的路径呢!
      

  5.   

    不会与我说的这个问题吧?呵呵 
    http://topic.csdn.net/u/20080929/18/a7ebef7d-873f-4af6-a8ae-8ad10ed8a44e.html