2016-07-12 2 views
1

Итак, я пытаюсь создать простой чат для своего сайта, но я не знаю, как это сделать, когда кто-то отправляет сообщение, которое он будет показывать в чате других людей, например, я говорю привет в одном браузере, но это не отображается в другом браузере, пока я не обновляю страницу вручную.Как обновить чат с помощью 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 />'; 
}` 
+0

You забыл поместить его в '$ (document) .ready()' func Тион? –

+0

это может помочь вам http://stackoverflow.com/questions/21600166/auto-refresh-included-php-file-inside-a-div –

+0

Как вы знаете, это будет смертельно опасно на вашем веб-сервере, если вы попробуете это так :-). Но это одна из первых вещей, которые я сделал, когда Ajax был возможностью. Ах, старые добрые дни IE6. –

ответ

0

Поскольку вы используете JQuery 1.3:

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

Вы не можете использовать Выполненные и сбой. Они не доступны в JQuery 1.3.0

Используйте вместо этого: успеха и ошибки.

Ссылаясь на

А. Вольфа комментарию пытаются взглянуть на 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> 
+0

все еще не хочет загружаться, хотя я пробовал так много разных способов. даже изменяя версию jquery. как проблема, это буквально не хочет загружать файл чата.php – Potato

+0

Я положил его на 10 секунд и до сих пор ничего. Только форма – Potato

+0

@Potato Вы должны увидеть хотя бы сообщение об ошибке! Если вы не видите хотя бы сообщение об ошибке, проблема не зависит от вызова ajax. Попробуйте также удалить таймер и вызвать ajax на кнопку. – gaetanoM

0

Установите интервал в 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 
    }); 
} 
+0

К сожалению, он по-прежнему не работает – Potato

Смежные вопросы