2016-07-12 4 views
1

Okay, also ich versuche, einen einfachen Chat für meine Website zu erstellen, aber ich weiß nicht, wie man es macht, wenn jemand eine Nachricht sendet, wird es auf anderen Leuten angezeigt, so sage ich zum Beispiel hallo in einem Browser aber es wird nicht in einem anderen Browser angezeigt, bis ich die Seite manuell aktualisiere.Wie aktualisiere ich den Chat mit Javascript?

Ich weiß, es gibt AJAX, um das div des Chats zu aktualisieren, aber alles, was ich versuchte, scheint nicht zu funktionieren und ich weiß nicht warum.

Hier ist meine Indexdatei

<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> 

Es zeigt nicht den Chat überhaupt, und ich weiß nicht, warum, weil die Datei im selben Ordner wie die index.php ist

wenn ich Setzen Sie den Chat-Code in die Index-Datei, es funktioniert gut. Hier

ist die chat.php Datei

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

Sie habe vergessen, es in '$ (document) .ready()' func zu setzen tion? –

+0

das kann Ihnen helfen http://stackoverflow.com/questions/21600166/auto-refresh-included-php-file-inside-a-div –

+0

Nur damit Sie wissen, wird dies auf Ihrem Webserver tödlich sein, wenn Sie es versuchen Es ist so ;-). Aber das ist eines der ersten Dinge, die ich gemacht habe, als Ajax eine Möglichkeit war. Ah gute alte IE6 Tage. –

Antwort

0

Weil Sie jQuery verwenden 1.3:

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

Sie nicht done verwenden können und Fehler. Diese sind nicht in jQuery 1.3.0

Verwenden statt: Erfolg und Fehler.

Mit Bezug auf

A. Wolf Kommentar versuchen, einen Blick auf how-do-i-implement-basic-long-polling

Das korrigierte Snippet für den Ajax-Aufruf nur zu nehmen:

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

will immer noch nicht laden, obwohl ich so viele verschiedene Möglichkeiten ausprobiert habe. sogar die Version von jquery ändern. Das Problem ist, dass der Dateichat nicht wirklich geladen werden soll.php – Potato

+0

Ich habe es auf 10 Sekunden und immer noch nichts gesetzt. Nur das Formular – Potato

+0

@Potato Sie müssen zumindest die Fehlermeldung sehen! Wenn Sie zumindest die Fehlermeldung nicht sehen, hängt das Problem nicht von einem AJAX-Aufruf ab. Versuchen Sie auch, den Timer zu entfernen und den Ajax auf einer Schaltfläche aufzurufen. – gaetanoM

0

Stellen Sie Ihr Intervall in 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

Leider funktioniert es immer noch nicht – Potato