【问题标题】:How to I refresh the chat using javascript?如何使用 javascript 刷新聊天?
【发布时间】:2016-07-12 13:07:01
【问题描述】:

好的,所以我正在尝试为我的网站创建一个简单的聊天,但我不知道如何制作,所以当有人发送消息时,它会显示在其他人的聊天中,例如我在一个浏览器上打招呼但是在我手动刷新页面之前,它不会显示在其他浏览器上。

我知道有 AJAX 可以刷新聊天的 div,但我尝试的一切似乎都不起作用,我不知道为什么。

这是我的索引文件

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.0/jquery.min.js"></script>    
<script type="text/javascript"> 
setInterval( refreshMessages, 1000 );
function refreshMessages(){
$.ajax({
url: 'chat.php',
type: 'GET',
dataType: 'html'
})
.done(function( data ) {
$('#chat').html( data ); // data came back ok, so display it
})
.fail(function() {
$('#chat').prepend('Error retrieving new messages..');
});
}
</script>

<div id="chat"></div>

它根本不显示聊天,我不知道为什么,因为该文件与 index.php 位于同一文件夹中

如果我将聊天代码放在索引文件中,它就可以正常工作。

这里是chat.php文件

`$messages = get_msg();
foreach($messages as $message) {
echo '<p><strong>' . $message['sender'] . ' - </strong></p>';
echo '<p>' . $message['message'] . '<br /><br />';
}`

【问题讨论】:

  • 你忘了把它放在$(document).ready()函数里面?
  • 您知道,如果您像这样尝试,这将对您的网络服务器造成致命影响 ;-)。但这是当 Ajax 成为可能时我做的第一件事之一。啊,好旧的 IE6 天。
  • 查看 websockets,因为这是这类应用程序的最佳实践。除非“正常工作”的应用程序就足够了(例如,仅用于测试或摆弄)。
  • 如果你的服务器响应时间超过 1 秒,你的代码就会失败。如果 websockets 不适合您,请搜索 ajax 长轮询(使用超时,而不是间隔!)

标签: php jquery ajax chat


【解决方案1】:

因为您使用的是 jQuery 1.3:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.0/jquery.min.js"></script>    

您不能使用 donefail。这些在 jQuery 1.3.0 中不可用

改用:成功错误

参考

A.狼评论试试看how-do-i-implement-basic-long-polling

更正后的 sn-p 仅适用于 ajax 调用:

setInterval(refreshMessages, 1000);
function refreshMessages() {
  $.ajax({
    url: 'chat.php',
    type: 'GET',
    dataType: 'html',
    success: function(data) {
      $('#chat').html(data); // data came back ok, so display it
    },
    error: function() {
      $('#chat').prepend('Error retrieving new messages..');
    }
  });
}
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.0/jquery.min.js"></script>

<div id="chat"></div>

【讨论】:

  • 即使我尝试了很多不同的方式,仍然不想加载。甚至更改 jquery 的版本。像问题一样,它实际上不想加载文件 chat.php
  • 我已将其设置为 10 秒,但仍然一无所获。只有表格
  • @Potato 你至少要看到错误信息!如果您至少没有看到错误消息,则问题不依赖于 ajax 调用。还可以尝试删除计时器并在按钮上调用 ajax。
  • 你先生太棒了。非常感谢你,我已经尝试了一个小时,它现在可以工作了!
  • 是的!抱歉,这个网站还是新手
【解决方案2】:

setInterval中设置您的时间间隔

setInterval( refreshMessages, 1000 );

function refreshMessages()
{
    $.ajax({
        url: 'chat.php',
        type: 'GET',
        dataType: 'html'
    })
    .done(function( data ) {
        $('#chat').html( data ); // data came back ok, so display it
    })
    .fail(function() {
        $('#msgs').prepend('Error retrieving new messages..'); // there was an error, so display an error
    });
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多