par jeicko » 23 avr. 2021, 16:57
par Saian » 22 avr. 2021, 11:54
success: function (data) { if (!data.success) { alert(data.message); return false; } // le code si la réponse est en success=1 }
par jeicko » 22 avr. 2021, 11:06
par Saian » 22 avr. 2021, 01:58
par jeicko » 22 avr. 2021, 00:32
Code : Tout sélectionner
$.ajax({ url: "add_comment.php", method: "POST", data: form_data, dataType: "JSON", success: function(data) { if (data.error !== "") { $comment_content.val('');//ici je vide seulement le le texte saisi après validation $comment_message.html(data.error); //un formulaire (élément) contient tous ses inputs //c'est rangé par nom $comment_form[0].comment_id.value = "0"; load_comment(); } },//ici j'essaie de ne pas vider le formulaire en cas d'erreurs error: function(data) { if (data.error !== "") { $comment_message.html(data.error); $comment_form[0].comment_id.value = "0"; load_comment(); } }, });
par jeicko » 21 avr. 2021, 17:38
PPPS : tu pourrais également re-remplir les champs du formulaire en cas d'erreur pour que l'utilisateur n'ait pas à les re-saisir.
par jeicko » 21 avr. 2021, 17:16
const $email = $("#email");
$email.val('')
const $comment_content = $("#comment_content");
$comment_content.val('');
par Saian » 21 avr. 2021, 14:37
par jeicko » 21 avr. 2021, 13:29
PPPS : tu pourrais également re-remplir les champs du formulaire en cas d'erreur pour que l'utilisateur n'ait pas à les re-saisir. De même tu pourrais remettre le pseudo et le mail saisis lors du premier envoi.
<form method="post" action="test.php"> <input type="text" name="exemple" value="<?php if (isset($_POST['exemple'])){echo $_POST['exemple'];} ?>" /> <input type="submit" value="envoyer" /> </form>
par jeicko » 20 avr. 2021, 18:45
//Connexion Recaptcha grecaptcha.ready(function () { grecaptcha .execute("***", { action: "homepage", }) .then(function (token) { document.getElementById("recaptchaResponse-com").value = token; }); }); $(document).ready(function() { //quand le DOM est là, on sélectionne les éléments avec lesquels on va travailler //c'est mieux de le faire une fois au début, pour des questions de perf //mais surtout pour éviter d'avoir à faire un gros ctrl + r pour changer les sélecteurs. const $comment_form = $("#comment_form"); const $comment_message = $("#comment_message"); const $display_comment = $("#display_comment"); $comment_form.on("submit", function(event) { event.preventDefault(); const form_data = $comment_form.serialize(); $.ajax({ url: "add_comment.php", method: "POST", data: form_data, dataType: "JSON", success: function(data) { if (data.error !== "") { $comment_form[0].reset(); $comment_message.html(data.error); //un formulaire (élément) contient tous ses inputs //c'est rangé par nom $comment_form[0].comment_id.value = "0"; load_comment(); } }, }); //on renouvelle le token pour envoyer un 2nd commentaire grecaptcha .execute("***", { action: "homepage", }) .then(function (token) { document.getElementById("recaptchaResponse-com").value = token; }); }); reload(); ////////////////////////////////// function load_comment() { $.ajax({ url: "fetch_comment.php", //POST pour envoyer des données, et GET pour obtenir des données method: "POST", success: function(data) { $display_comment.html(data); $(".reply").on("click", function() { $comment_form[0].comment_id.value = $(this).attr("id"); $comment_form[0].comment_name.focus(); }); }, }); } function reload() { load_comment(); setTimeout(reload, 10000); } });
$("#contact-form").submit(function (event) { event.preventDefault(); // Empêcher la soumission directe du formulaire $("#alert").text("Envoi en cours...").fadeIn(0); // Afficher "Traitement" pour informer l'utilisateur que le formulaire est en cours d'envoi grecaptcha.ready(function () { // Clef REcaptcha site ci dessous grecaptcha .execute("***", { action: "contact", }) .then(function (token) { var recaptchaResponse = document.getElementById("recaptchaResponse"); recaptchaResponse.value = token; // Passez l'appel Ajax ici $.ajax({ url: "contact.php", type: "post", data: $("#contact-form").serialize(), dataType: "json", success: function (_response) { // La requête Ajax est un succès. _response est un objet JSON var error = _response.error; var success = _response.success; if (error != "") { // En cas d'erreur, affichez-le à l'utilisateur $("#alert").html(error); } else { // En cas de succès, affichez-le à l'utilisateur et supprimez le bouton d'envoi (non utilisé pour le moment) $("#alert").html(success); $("").remove(); $("#contact-form")[0].reset(); } }, error: function (jqXhr, json, errorThrown) { // En cas d'erreur Ajax également, affiche le résultat var error = jqXhr.responseText; $("#alert").html(error); $("#contact-form")[0].reset(); }, }); //on renouvelle le token pour envoyer un 2nd message grecaptcha .execute("***", { action: "contact", }) .then(function (token) { document.getElementById("recaptchaResponse").value = token; }); }); }); });
par Saian » 20 avr. 2021, 17:35
par jeicko » 20 avr. 2021, 17:16
PPS : autre solution, au lieu de déplacer le code comme je le suggère plus haut, lors de la soumission du formulaire tu renouvelles le token après le call ajax (tu refais le même appel que dans le grecaptcha.ready()). L'idéal serait de verrouiller le bouton d'envoi tant que le token n'est pas renouvelé.
//Connexion Recaptcha grecaptcha.ready(function () { grecaptcha .execute("***", { action: "homepage", }) .then(function (token) { document.getElementById("recaptchaResponse-com").value = token; }); }); $(document).ready(function () { //quand le DOM est là, on sélectionne les éléments avec lesquels on va travailler //c'est mieux de le faire une fois au début, pour des questions de perf //mais surtout pour éviter d'avoir à faire un gros ctrl + r pour changer les sélecteurs. const $comment_form = $("#comment_form"); const $comment_message = $("#comment_message"); const $display_comment = $("#display_comment"); $comment_form.on("submit", function (event) { event.preventDefault(); const form_data = $comment_form.serialize(); $.ajax({ url: "add_comment.php", method: "POST", data: form_data, dataType: "JSON", success: function (data) { if (data.error !== "") { $comment_form[0].reset(); $comment_message.html(data.error); //un formulaire (élément) contient tous ses inputs //c'est rangé par nom $comment_form[0].comment_id.value = "0"; load_comment(); //on renouvelle le token pour envoyer un 2nd commentaire grecaptcha .execute("***", { action: "homepage", }) .then(function (token) { document.getElementById("recaptchaResponse-com").value = token; }); } }, }); }); reload(); ////////////////////////////////// function load_comment() { $.ajax({ url: "fetch_comment.php", //POST pour envoyer des données, et GET pour obtenir des données method: "POST", success: function (data) { $display_comment.html(data); $(".reply").on("click", function () { $comment_form[0].comment_id.value = $(this).attr("id"); $comment_form[0].comment_name.focus(); }); }, }); } function reload() { load_comment(); setTimeout(reload, 10000); } });
PS : pour le formulaire de contact tu auras surement le même problème si l'utilisateur veut envoyer plusieurs messages et qu'il ne rafraichit pas la page entre temps.
par Saian » 20 avr. 2021, 16:23
par jeicko » 20 avr. 2021, 16:10
par Saian » 20 avr. 2021, 15:51