首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

ajax聊天室不刷新有关问题 超急好不容易有兴趣学ajax了.解决立马给分!

2012-02-14 
ajax聊天室不刷新问题 超急!!好不容易有兴趣学ajax了.解决立马给分!!!出现的问题是:点击发言按钮后,新的数

ajax聊天室不刷新问题 超急!!好不容易有兴趣学ajax了.解决立马给分!!!
出现的问题是:   点击发言按钮后,新的数据确实到access数据库里了,但是前台聊天室界面一直显示的还有老的数据,没有刷新.比如以前有一条信息: "你好 ".当发表第二条信息: "中国人 "后,“中国人”这条信息成功的到数据库里了,但是在前台还一直是 "你好 "这条信息.我能确定更新消息的异步请求是一直在执行的,但就是不知道为什么不会取更新后的信息.下面是源码,请大家帮帮我:
<script   type= "text/javascript ">
//////////////////////////////////////////更新消息的异步
var   xmlHttp;
function   createXMLHttpRequest()   {
        if   (window.ActiveXObject)   {
                xmlHttp   =   new   ActiveXObject( "Microsoft.XMLHTTP ");
        }  
        else   if   (window.XMLHttpRequest)   {
                xmlHttp   =   new   XMLHttpRequest();
        }
}
       
function   startRequest()   {
        createXMLHttpRequest();
        xmlHttp.onreadystatechange   =   displayinfo;
        xmlHttp.open( "GET ",   "getnewmessage.aspx ",   true);
        xmlHttp.send(null);
}
       
function   displayinfo()   {
        if(xmlHttp.readyState   ==   4)   {
                if(xmlHttp.status   ==   200)   {
                        showinfo();
                }
        }
}
function   showinfo()
{
        var   chatlist=document.getElementById( "content ");
        if(chatlist.hasChildNodes())
        chatlist.removeChild(chatlist.childNodes[0]);
        var   info=document.createTextNode(xmlHttp.responseText);
        document.getElementById( "content ").appendChild(info);
        window.setTimeout( "startRequest() ",2500);
}

////////////////////////////////////////////////发送消息的异步
var   sendxmlhttp;
function   createSendXMLHttpRequest()   {
        if   (window.ActiveXObject)   {
                sendxmlhttp   =   new   ActiveXObject( "Microsoft.XMLHTTP ");
        }  
        else   if   (window.XMLHttpRequest)   {
                sendxmlhttp   =   new   XMLHttpRequest();
        }
}
       
function   sendmessage()   {
        createSendXMLHttpRequest();
        var   para= "para= "+document.getElementById( "info ").value;
        sendxmlhttp.onreadystatechange   =   getresult;
        sendxmlhttp.open( "GET ",   "addmessage.aspx? "+para,   true);
        sendxmlhttp.send(null);
}
       
function   getresult()   {
        if(sendxmlhttp.readyState   ==   4)   {
                if(sendxmlhttp.status   ==   200)   {


                        var   result=sendxmlhttp.responseText;
if(result== "success ")
    document.getElementById( "info ").value= " ";
                }
        }
}
</script>
</head>
<body   onload= "startRequest(); ">
        <form   id= "form1 "   runat= "server ">
        <span   id= "content ">
       
        </span>
        <div>
        <input   type= "Text "   id= "info "   />
        <input   type= "button "   id= "tb "   value= "发言 "   onclick= "sendmessage(); "/>
        </div>
        </form>
</body>
</html>

[解决办法]
下面这个函数中,你哪句是把返回的数据写到界面上的?
呵呵,就差这点。

function getresult() {
if(sendxmlhttp.readyState == 4) {
if(sendxmlhttp.status == 200) {
var result=sendxmlhttp.responseText;
if(result== "success ")
document.getElementById( "info ").value= " ";
}
}
}

热点排行