AJAX设置DIV的innerhtml的问题

BearRui 2006-10-28 09:34:42
AJAX动态获取邮件的内容并显示到DIV中,一般的都比较正常,现在有个问题。

当邮件内容是个ASPX页面的内容时就会出错,而且报的"Unknow Error".

但是如果把这个邮件内容通过后台.cs中的代码来设置到div的innerhtml就没问题,

但这样就会刷新页面,是我不想的。

大家有没有碰见过这样的问题,帮帮忙。
...全文
1511 30 打赏 收藏 举报
写回复
30 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
yiyioo 2006-10-31
  • 打赏
  • 举报
回复
没下楼主的代码
不过,这种情况应该是回车换行,双引号之类的导致的,

在asp里我碰到过,先在服务端把chr(13)&chr(10)替换成<br/>,然后把双引号替换成一个'(这个要看具体情况)
在.net里,应该是把\n\r替换成<br/>,楼主可以尝试一下.
min_1982 2006-10-31
  • 打赏
  • 举报
回复
路过学习
jacky_20001 2006-10-31
  • 打赏
  • 举报
回复
aspx里面有大量重要的html代码
所以放在div肯定会出错
把一些关键的html代码去掉 可能可以正常显示
JennyGreator 2006-10-31
  • 打赏
  • 举报
回复
AJAX本来就是前台的东西,如果要用后台去更新还用AJAX干吗。
ls212 2006-10-30
  • 打赏
  • 举报
回复
学习!~~~~
zlopen 2006-10-30
  • 打赏
  • 举报
回复
在页面赋值前,把innerhtml的冲突内容进行转义即可
如“<”替换为“<”,“>”替换为“l>”
Csharp110 2006-10-30
  • 打赏
  • 举报
回复
学习了!只能帮你顶!
  • 打赏
  • 举报
回复
Q: 在页面赋值前,把innerhtml的冲突内容进行转义即可


请将要输出的内容按下面的格式
<![CDATA[ "这里放您的内容" ]]>
————————————————————————————————————————————
A: 难道要显示html源代码?

不是的,是要显示网页经过浏览器解释后的ui界面。
sh_city 2006-10-30
  • 打赏
  • 举报
回复
请将要输出的内容按下面的格式
<![CDATA[ "这里放您的内容" ]]>
yougucao379548695 2006-10-29
  • 打赏
  • 举报
回复
呵呵,帮顶!
  • 打赏
  • 举报
回复
你直接把它拷贝在<div></div>中间也照样不出错误(其实哪是什么不出错误呀,明明是ie对很多错误都直接忽略,以免太技术化吓坏、烦坏一般群众),但是使用脚本命令的innerHTML属性来赋值才出错。
BearRui 2006-10-28
  • 打赏
  • 举报
回复
但是问题是,为什么用后台的.cs代码把它显示在DIV中就一切正常了。

你可以试试在ASP:BUTTON下click时间下读取内容并付值到DIV的innerhtml中就一切正常了。
ustbwuyi 2006-10-28
  • 打赏
  • 举报
回复
哦...原来这样,不用试也知道显示在div肯定会有错,相当于把html标签什么的都包到
div了,这样的话确实有点郁闷..你传过来的是html源代码吧,如果是这样的话可不可以把它的那些<html><body>这些标签去掉再传过来呢?
BearRui 2006-10-28
  • 打赏
  • 举报
回复
大家看清楚我的问题,我的重点不是AJAX的使用,主要的问题是我要显示的内容,如果是一般的内容就都没问题,比如ustbwuyi() 给的例子中的代码就是一般的内容。

而当要显示的内容是整1个ASPX页面的内容的时候,就会出错。

大家可以下载http://www.cnblogs.com/Files/BearsTaR/1.rar

然后用JS把这个内容显示在DIV里面看看会不会出错。
----------------------------------

再次声明:问题的重点是要显示的内容很特别。
ustbwuyi 2006-10-28
  • 打赏
  • 举报
回复
楼上的说得很有道理,我的例子就是这样处理的,异步回调负责更新table,内容来自于后台,
而脚本更新table的innerHTML,然后用setInterval不断更新....
fengyecsdn 2006-10-28
  • 打赏
  • 举报
回复
sp1234(没有心情,没有心情短语)
严重同意你!!!!
把ASPX页的内容显示到DIV中这根本就是非常错误的想法!!!

ASPX输出的内容要用来显示!有以下办法
1:让ASPX页输出标准数据,而不是输出HTML页.比如直接写成XML或者自己定义的数据流.(有些站点的防图片盗连就是这样,让一个ASPX页根据参数输出图片字节流)
2:你自己去分析ASPX页的HTML代码,去除标记语言,自己抓出数据!
3:动态WINDOW,或者MOD窗口,嵌入试IFRAME等等办法.

其实最好的多站多页面数据整合还是RSS\XML或者是WEBSERVCES
fengyecsdn 2006-10-28
  • 打赏
  • 举报
回复
晕死了 看你的题目真不明白你到底问题是啥

你是用AJAX直接去读信息了么?
我觉得还是 AJAX只负责更新DIV 而DIV的内容靠后台代码解决,别用脚本改DIV的内容
只要让AJAX更新DIV这个区域就可以了
ustbwuyi 2006-10-28
  • 打赏
  • 举报
回复
我的意思是从后台取而不刷新页面..
ustbwuyi 2006-10-28
  • 打赏
  • 举报
回复
客户端:
<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>
ustbwuyi 2006-10-28
  • 打赏
  • 举报
回复
给个例子
服务器端:
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 );
}
加载更多回复(10)
相关推荐
发帖
.NET社区

6.1w+

社区成员

.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
帖子事件
创建了帖子
2006-10-28 09:34
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。