IE中的Javascript AJAX responseText问题

| 我正在尝试使用PHP / MySql和AJAX创建某种聊天框系统,但是在IE中运行脚本遇到困难。我在Google Chrome浏览器中对其进行了测试,效果很好。但是,当我在IE中对其进行测试时,应该每3秒从数据库中获取所有消息的AJAX函数无法正常工作。它确实每3秒调用一次PHP脚本,并将responseText放入div(显示每3秒显示的所有消息)。但是显示的消息始终是相同的(直到我关闭页面并重新运行脚本)。同样,将新消息添加到数据库时,它也不会显示。好像responseText不是\'updating \'。这些是我的脚本: (AJAX)
function getMessages(messengerid, repeat)
{
var xmlhttp;
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject(\"Microsoft.XMLHTTP\");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById(\"messages\").innerHTML=xmlhttp.responseText;
    document.getElementById(\"messages\").scrollTop = document.getElementById(\"messages\").scrollHeight;
    }
  }
xmlhttp.open(\"GET\",\"modules/get_messages.php?key=abcIUETH85i236t246jerst3487Jh&id=\"+messengerid,true);
xmlhttp.send();
if(repeat) {
    setTimeout(\"getMessages(\"+messengerid+\", 1);\", 3000);
}
}
(PHP / MySQL)
<?php
$key = \"abcIUETH85i236t246jerst3487Jh\";

if( ($_GET[\'key\'] == $key OR defined(\'IS_INTERNAL\')) AND (int)$_GET[\'id\'] > 0) {

    include_once(\"../config.php\");
    include_once(\"../class/system.class.php\");

    $sys = new system($template_name);

    if(!$sys->connect($db)) {
        exit();
    }

    $messages = $sys->getEntries(\"messages\", \" WHERE messenger_id = \'\".(int)$_GET[\'id\'].\"\' ORDER BY id ASC \");
    $messenger    = $sys->getEntries(\"messengers\", \" WHERE id = \'\".(int)$_GET[\'id\'].\"\' LIMIT 1\");

    $user1 = $sys->getEntries(\"accounts\", \" WHERE id = \'\".$messenger[0][\'account_id1\'].\"\' \");
    $user2 = $sys->getEntries(\"accounts\", \" WHERE id = \'\".$messenger[0][\'account_id2\'].\"\' \");

    $displaynames[$user1[0][\'id\']] = $user1[0][\'displayname\'];
    $displaynames[$user2[0][\'id\']] = $user2[0][\'displayname\'];

    foreach($messages AS $key => $message) {

    if(is_numeric($key)) {              
    ?>
    <div class=\"message\">
        <b><?=$displaynames[$message[\'account_id\']];?>  (<?=date(\"h:m:s\", $message[\'timestamp\']);?>) says:</b> <br />
        <?=nl2br($message[\'message_content\']);?>
    </div>
    <?php
    }
    }


}

?>
任何帮助将非常感激! 提前致谢。 最好的祝福, Skyfe。     
已邀请:
您的回复正在缓存中。解决此问题的一种方法是在您的请求URL中添加唯一参数,例如当前时间戳。     
这是IE的一个常见问题,它会缓存结果。向您的ajax调用中添加一些虚拟随机参数,例如当前时间戳     
我不了解php,但是在jsp中,您可以将以下代码添加到jsp页面中
response.setHeader(\"Cache-Control\",\"no-store, no-cache, must-revalidate\");
response.setHeader(\"Pragma\",\"no-cache\"); 
response.setDateHeader (\"Expires\", 0);
我知道帖子很旧,我只是对未来的观众回复:D;)     

要回复问题请先登录注册