日期:2014-05-20  浏览次数:21010 次

ajax做的无刷新聊天遇到的一个问题,召唤各位朋友帮忙看看,在线结帖
用XMLHTTP做了一个拖拽的无刷新聊天,基本功能已经晚上,但是遇到一个很怪的问题,聊天语句经常会丢失,于是做了跟踪调查.发现一个问题,但是以小弟的经验,不知道该怎么解决,特求助,问题如下:

聊天信息可保证有接收到,用alert弹出来该信息的话,句句都有,但是弹出的同时要写到窗体上的容器上,却有时候写不进去.我想了很久,会不会是容器有问题,就换了容器,而且同时在页面放了几种容器来测试,结果问题还是一样.

///拖拽代码
function   GetResult()//ajax无刷新实现
{
var   oBao   =   new   ActiveXObject( "Microsoft.XMLHTTP ");  
oBao.open( "POST ", "GetMsg.aspx?id= <%=RoomID%> ",false);
oBao.send();
 
var   strResult   =   oBao.responseText;
var   arrResult   =   strResult.split( "‖ ");  

//alert( '接到数据 ');
for(var   i=0;i <arrResult.length-1;i++)
{
                  //用来跟踪的一个TEXT,也是一样有时候写不进去
Form1.Temp.value   =   " ";//
Form1.Temp.value   =   arrResult[i];

arrTmp   =   arrResult[i].split( "| ");  
                  //ChatRun是执行信息输出到页面的function,有时候会写不进去.
ChatRun(arrTmp[0],arrTmp[1],arrTmp[2],arrTmp[3],arrTmp[4],arrTmp[5],arrTmp[6])

                  //将整个句子弹出,每句都有
alert(arrResult[i]);
}
setTimeout( "GetResult() ",1000);
}

///////////////////ChatRun

function   ChatRun(username,post_obj,saystr,sl,addsign,sayscolor,number)
{
var   oChatRoom   =   document.getElementById( "ChatRoom ");
var   msg   =   " ";
var   gg   =   " ";
 
msg   =   " <span   class=chat4> <a   href=javascript:seluser( ' "+username+ " ');> "+username+ " </a> 对 <a   href=javascript:seluser( ' "+post_obj+ " ');> "+post_obj+ " </a> 说: <font   color= "+sayscolor+ "> "+saystr+ " </font> </span> <br> ";
 
oChatRoom.innerHTML   +=   msg;
oChatRoom.scrollTop   =   999999;
}

------解决方案--------------------
function GetResult()//ajax无刷新实现
{
var oBao = new ActiveXObject( "Microsoft.XMLHTTP ");
oBao.open( "POST ", "GetMsg.aspx?id= <%=RoomID%> ",false);
oBao.onreadystatechange=function()
{
if(oBao.readyState==4)
{
var strResult = oBao.responseText;
var arrResult = strResult.split( "‖ ");

for(var i=0;i <arrResult.length-1;i++)
{
Form1.Temp.value = " ";//
Form1.Temp.value = arrResult[i];
arrTmp = arrResult[i].split( "| ");
alert(arrTmp.length);
ChatRun(arrTmp[0],arrTmp[1],arrTmp[2],arrTmp[3],arrTmp[4],arrTmp[5],arrTmp[6])
}
setTimeout( "GetResult() ",1000);
}
}
oBao.send(null);


------解决方案--------------------
帮你UP下

你最好看下你往容器里面写的信息是不是闭和的HTML,就不帮你细看了