如何使用 javascript 刷新聊天?
How to I refresh the chat using javascript?
好的,所以我正在尝试为我的网站创建一个简单的聊天,但我不知道如何做到这一点,所以当有人发送消息时,它会显示在其他人的聊天中,例如我在一个人的聊天中打招呼浏览器,但在我手动刷新页面之前它不会显示在另一个浏览器上。
我知道有 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 />';
}`
在 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
});
}
因为您正在使用 jQuery 1.3:
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.0/jquery.min.js"></script>
您不能使用 done 和 fail.这些在 jQuery 1.3.0
中不可用
改用:成功和错误.
参考
A. Wolf comment try to take a look to how-do-i-implement-basic-long-polling
仅针对 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>
好的,所以我正在尝试为我的网站创建一个简单的聊天,但我不知道如何做到这一点,所以当有人发送消息时,它会显示在其他人的聊天中,例如我在一个人的聊天中打招呼浏览器,但在我手动刷新页面之前它不会显示在另一个浏览器上。
我知道有 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 />';
}`
在 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
});
}
因为您正在使用 jQuery 1.3:
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.0/jquery.min.js"></script>
您不能使用 done 和 fail.这些在 jQuery 1.3.0
中不可用改用:成功和错误.
参考
A. Wolf comment try to take a look to how-do-i-implement-basic-long-polling
仅针对 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>