Bonjour à tous
Dans le navigateur, j’ai 2 messages d’erreurs m’indiquant : Erreur lors de la récupération des messages publics. Veuillez réessayer plus tard » et « Les données reçues ne sont pas un tableau ». Le but de ma consigne est qu’un membre puisse supprimer un sujet de discussion privée ouvert sur tous les profils. J’ai codifié mon scripts comme ceci
// Fonction pour gérer les sujets de discussion privée avec tous les profils et suppression
document.addEventListener("DOMContentLoaded", function () {
const allmessageForm = document.getElementById("allmessagesForm");
const allmessageInput = document.getElementById("allmessageInput");
const adminChatWindow = document.getElementById("adminChatWindow");
const allUsersList = document.getElementById("allUsersList");
const alldeleteDiscussionBtn = document.getElementById(
"alldeleteDiscussionBtn"
);
if (allmessageForm) {
allmessageForm.addEventListener("submit", async function (event) {
event.preventDefault();
const message = allmessageInput.value.trim();
if (!message) {
alert("Veuillez saisir un message.");
return;
}
try {
const response = await fetch(
"http://localhost:3000/api/postAllProfiles",
{
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify({
content: message,
}),
}
);
const data = await response.json();
if (response.ok) {
allmessageInput.value = "";
loadAllMessages();
} else {
alert("Erreur lors de l'envoi du message public : " + data.message);
}
} catch (error) {
console.error("Erreur lors de l'envoi du message public : ", error);
alert("Erreur lors de l'envoi du message public : " + error.message);
}
});
}
// Suppression de la discussion publique ouverte par l'administrateur sur tous les profils
if (alldeleteDiscussionBtn) {
alldeleteDiscussionBtn.addEventListener("click", async function () {
if (confirm("Êtes-vous certain de supprimer cette discussion?")) {
try {
const response = await fetch(
"http://localhost:3000/api/alldeleteDiscussion",
{
method: "DELETE",
headers: {
"Content-Type": "application/json",
},
}
);
const data = await response.json();
if (response.ok) {
alert("Suppression de la discussion publique réussie!");
adminChatWindow.innerHTML = "";
} else {
alert(
"Erreur lors de la suppression de la discussion publique : " +
data.message
);
}
} catch (error) {
console.error(
"Erreur lors de la suppression de la discussion publique : ",
error
);
alert(
"Erreur lors de la suppression de la discussion publique : " +
error.message
);
}
}
});
}
async function loadAllMessages() {
try {
const response = await fetch(
"http://localhost:3000/api/allProfilesMessages",
{
method: "GET",
headers: {
"Content-Type": "application/json",
},
}
);
if (!response.ok) {
console.warn("Problème pour obtenir les messages publics");
alert(
"Problème pour obtenir les messages publics. Veuillez réessayer plus tard."
);
return;
}
const data = await response.json();
if (adminChatWindow) {
adminChatWindow.innerHTML = "";
if (Array.isArray(data)) {
data.forEach((message) => {
const messageItem = document.createElement("div");
messageItem.classList.add("message-item");
messageItem.innerHTML = `<p>${message.content}</p>
<small class="text-muted">${new Date(
message.createdAt
).toLocaleString()}</small>`;
adminChatWindow.appendChild(messageItem);
});
} else {
console.error("Les données reçues ne sont pas un tableau");
alert(
"Erreur lors de la récupération des messages publics. Veuillez réessayer plus tard."
);
}
}
} catch (error) {
console.error(
"Erreur lors de la récupération des messages publics : ",
error
);
alert(
"Erreur lors de la récupération des messages publics. Veuillez réessayer plus tard."
);
}
}
async function loadAllUsers() {
try {
const response = await fetch("http://localhost:3000/api/Users", {
method: "GET",
headers: {
"Content-Type": "application/json",
},
});
if (!response.ok) {
console.warn("Problème pour obtenir la liste des utilisateurs");
alert(
"Problème pour obtenir la liste des utilisateurs. Veuillez réessayer plus tard."
);
return;
}
const data = await response.json();
if (allUsersList) {
allUsersList.innerHTML = "";
if (Array.isArray(data)) {
data.forEach((user) => {
const userItem = document.createElement("div");
userItem.classList.add("list-group-item");
userItem.innerHTML = `<p>${user.username}</p>`;
allUsersList.appendChild(userItem);
});
} else {
console.error("Les données reçues ne sont pas un tableau :", data);
alert(
"Erreur lors de la récupération de la liste des utilisateurs. Veuillez réessayer plus tard."
);
}
}
} catch (error) {
console.error(
"Erreur lors de la récupération de la liste des utilisateurs : ",
error
);
alert(
"Erreur lors de la récupération de la liste des utilisateurs. Veuillez réessayer plus tard."
);
}
}
loadAllUsers();
loadAllMessages();
et c'est là où j'ai eu ses deux messages. Pouvez vous m'aider SVP et me dire comment je pourrais modifier? Merci à tous
Si tu as ces messages c'est que tu rentre dans le catch() donc il faut regarder l'erreur pour comprendre l'origine. Tu peux aussi utiliser debugger pour suivre le déroulé du script et comprendre où il bloque
Merci Beaucoup Grafikart j'ai entretemps fait le debuggage et j'ai rajouté data et data lenght. Sur ce que j'ai compris vu que Data n'est pas un tableau. Soit la variable est vide parce qu'il n'y a pas de messages à charger. Soit la requête renvoie une erreur.
Pour la requête, si elle est en erreur tu peux aller dans l'onglet "réseau" de ton inspecteur.