AJAX动态获取邮件的内容并显示到DIV中,一般的都比较正常,现在有个问题。当邮件内容是个ASPX页面的内容时就会出错,而且报的"Unknow Error".但是如果把这个邮件内容通过后台.cs中的代码来设置到div的innerhtml就没问题,但这样就会刷新页面,是我不想的。大家有没有碰见过这样的问题,帮帮忙。

解决方案 »

  1.   

    下面这个是邮件的内容,因为有点大,CSDN有字数限制。所以就上传了下,大家帮忙看看
    -------------------
    http://www.cnblogs.com/Files/BearsTaR/1.rar
      

  2.   

    是取不到内容还是取到内容后设置innerHTML时有问题?
      

  3.   

    你把后台的邮件内容解析成xml然后通过异步回调传到页面,赋给div的innerhtml
      

  4.   

    To avisnet(第十维度) :能取到内容,就是在付值的时候出错了
      

  5.   

    to:ustbwuyi() 你可能没看清楚我的问题!!!
      

  6.   

    给个例子 
    服务器端: 
    protected string FormatMessage( MessageBox messages )
      {
        if ( messages.Messages.Count == 0 ) return "";
        string temp = "";
        ArrayList messageId = new ArrayList();
        foreach ( MessageRecord i in messages.Messages )
        {
          temp += "<table border=\"0\" cellpadding=\"3\" cellspacing=\"0\" width=\"100%\">";
          temp += "<tr>";
          temp += "<td align=\"left\" width=\"100%\">";
          if ( i.ReceiveOrSend == false )
            temp += i.ChatTo + "对我说:";
          else
            temp += "我对" + i.ChatTo + "说:";
          temp += i.SendTime + " </td>";
          temp += "</tr>";
          temp += "<tr>";
          temp += "<td width=\"100%\" align=\"left\"><font color=\"#C66FFF\">";
          temp += i.Content + " </font></td> </tr> </table>";
          messageId.Add( i.ID.ToString() );
          MinId = i.ID;
          string[] dd = new string[5];         }
        return temp; 
        return "";
      }  public void RaiseCallbackEvent( string Max )
      {
        MessageManager.UpdateIsRead( MaxId );
      }
      

  7.   

    客户端:
     <script type="text/javascript" language="javascript">  
      function <%#this.ClientID%>_CallBack(){    
        <%# Page.ClientScript.GetCallbackEventReference( this, "", this.ClientID + "_GetResult", "")%>;    
      }
      
      function <%#this.ClientID%>_GetResult(result){
        if(result!="")
        {
          document.getElementById("messageSession1").innerHTML+=result;     
            
        }
      }    
      i=window.setInterval("<%#this.ClientID%>_CallBack()",1000);  
      </script>
      

  8.   

    晕死了   看你的题目真不明白你到底问题是啥你是用AJAX直接去读信息了么?
    我觉得还是 AJAX只负责更新DIV  而DIV的内容靠后台代码解决,别用脚本改DIV的内容
    只要让AJAX更新DIV这个区域就可以了
      

  9.   

    楼上的说得很有道理,我的例子就是这样处理的,异步回调负责更新table,内容来自于后台,
    而脚本更新table的innerHTML,然后用setInterval不断更新....
      

  10.   

    大家看清楚我的问题,我的重点不是AJAX的使用,主要的问题是我要显示的内容,如果是一般的内容就都没问题,比如ustbwuyi() 给的例子中的代码就是一般的内容。而当要显示的内容是整1个ASPX页面的内容的时候,就会出错。大家可以下载http://www.cnblogs.com/Files/BearsTaR/1.rar然后用JS把这个内容显示在DIV里面看看会不会出错。
    ----------------------------------再次声明:问题的重点是要显示的内容很特别。
      

  11.   

    哦...原来这样,不用试也知道显示在div肯定会有错,相当于把html标签什么的都包到
    div了,这样的话确实有点郁闷..你传过来的是html源代码吧,如果是这样的话可不可以把它的那些<html><body>这些标签去掉再传过来呢?
      

  12.   

    但是问题是,为什么用后台的.cs代码把它显示在DIV中就一切正常了。你可以试试在ASP:BUTTON下click时间下读取内容并付值到DIV的innerhtml中就一切正常了。
      

  13.   

    你直接把它拷贝在<div></div>中间也照样不出错误(其实哪是什么不出错误呀,明明是ie对很多错误都直接忽略,以免太技术化吓坏、烦坏一般群众),但是使用脚本命令的innerHTML属性来赋值才出错。
      

  14.   

    要注意,虽然在ie上不出错,并不意味着这就符合现在所谓web标准(这是一个web标准上学究的习惯越来越盖过位用户着想的实践者的意见的时代),因此很多浏览器都会出错,甚至ie新版本都可能不允许此类写法。尽管不出错,并不意味着内部的东西能够正常显示。最终还是放在服务器端并且用iframe中显示比较正常。
      

  15.   

    用iframe不行啊,我那么多邮件,不可能每个邮件生成1个静态页面啊!!!
      

  16.   

    Q:用iframe不行啊,我那么多邮件,不可能每个邮件生成1个静态页面啊!!!
    ——————————————————————————————————————————
    A:你可以用一个aspx读取邮件,然后Response.Write其内容。没有要你生成静态页面啊。
      

  17.   

    我刚开始也想的用iframe,不过后来觉得到时候会有点问题,不过还是可以一试
      

  18.   

    sp1234(没有心情,没有心情短语) 
    严重同意你!!!!
    把ASPX页的内容显示到DIV中这根本就是非常错误的想法!!!ASPX输出的内容要用来显示!有以下办法
    1:让ASPX页输出标准数据,而不是输出HTML页.比如直接写成XML或者自己定义的数据流.(有些站点的防图片盗连就是这样,让一个ASPX页根据参数输出图片字节流)
    2:你自己去分析ASPX页的HTML代码,去除标记语言,自己抓出数据!
    3:动态WINDOW,或者MOD窗口,嵌入试IFRAME等等办法.其实最好的多站多页面数据整合还是RSS\XML或者是WEBSERVCES
      

  19.   

    在页面赋值前,把innerhtml的冲突内容进行转义即可
    如“<”替换为“&lt;”,“>”替换为“l&gt;”
      

  20.   

    请将要输出的内容按下面的格式
    <![CDATA[ "这里放您的内容" ]]>
      

  21.   

    Q: 在页面赋值前,把innerhtml的冲突内容进行转义即可
    请将要输出的内容按下面的格式
    <![CDATA[ "这里放您的内容" ]]>
    ————————————————————————————————————————————
    A: 难道要显示html源代码?不是的,是要显示网页经过浏览器解释后的ui界面。
      

  22.   

    AJAX本来就是前台的东西,如果要用后台去更新还用AJAX干吗。
      

  23.   

    aspx里面有大量重要的html代码 
    所以放在div肯定会出错 
    把一些关键的html代码去掉 可能可以正常显示
      

  24.   

    没下楼主的代码
    不过,这种情况应该是回车换行,双引号之类的导致的,在asp里我碰到过,先在服务端把chr(13)&chr(10)替换成<br/>,然后把双引号替换成一个'(这个要看具体情况)
    在.net里,应该是把\n\r替换成<br/>,楼主可以尝试一下.