Script AJAX et PHP (Laravel) pour un tchat
Bonjour,
J'essaie de coder un tchat avec le framework PHP Laravel (MVC) et un code Javascript vanilla et AJAX.
Je parviens à envoyer mes messages en base de données ainsi qu'à les afficher dans le tchat, cependant j'ai mis un setInterval pour actualiser le tchat toutes les x secondes, or à chaque actualisation je vois l'intégralité des messages être affichés. Je ne souhaiterais évidemment afficher que les derniers messages postés. Pourriez vous m'aider svp ?
Voici le
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| function msgLoader() {
let xmlhttp = new XMLHttpRequest()
xmlhttp.onreadystatechange = function()
{
if(this.readyState == 4) {
if(this.status == 200){
let messages = JSON.parse(this.response)
let discut = document.querySelector("#discut")
messages.reverse()
for(let message of messages){
discut.innerHTML = '<div class=\"flex justify-end mb-4\"><div class=\"mr-2 py-3 px-4 bg-blue-400 rounded-bl-3xl rounded-tl-3xl rounded-tr-xl text-white\">'
+ message.content + "</div></div>" + discut.innerHTML
lastID = message.id
}
}
}
}
xmlhttp.open("GET", "msgLoader/"+lastID)
xmlhttp.send()
} |
Et le
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| public function msgLoader(Request $request, $lastID)
{
if($request->isMethod('GET')){
$msgs = DB::table('messages')
->select('content')
->where('id', '>', $lastID)
->take(5)
->get();
$messagesJSON = json_encode($msgs);
echo $messagesJSON;
}
else{
return response()->json(['message' => 'no']);
}
} |
En vous remerciant par avance