【发布时间】: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 长轮询(使用超时,而不是间隔!)