Bonjour,
Je débute avec jQuery, mais j'éprouve quelques difficultés à réaliser mon script.
Il s'agit d'un script de commentaire, voici en quoi il consiste :
1) L'utilisateur rempli le formulaire (html) - pas de problème ici
2) L'utilisateur valide le formulaire
2.1) La liste des commentaires se met à jour ainsi que le nombre de commentaire, et j'affiche également un message de confirmation, ou un message d'erreur dans une balise div qui se réinitialise toute les 5 secondes (jQuery) - de ce côté je n'ai aucun problème
2.2) Le commentaire est envoyé à une page de traitement écrite en php - ici ça bloque, mais le problème n'est pas PHP
Le formulaire :
La page de traitement :
Et enfin, le jQuery
Le problème est cette ligne :
Le contenu #contenuAvis est bien récupéré (j'ai fais le test avec une alerte()), mais lorsque je souhaite traiter le formulaire via $_POST['contenuAvis'] celui-ci ne reçoit rien . Je suis bloqué déçu depuis plusieurs heures maintenant, après lecture et relecture de cours et tutoriels, jusqu’à la comparaison de script similaire au mien mais je ne vois vraiment pas d'où peut provenir l'erreur.
Je reçois toujours sur #statutAvis ce message "Vous n\'avez saisi aucun message !" , que le textarea soit rempli ou non, .
J'ai essayé avec la syntaxe $.ajax() et également $.post() et $.get().
En soit le code est simplifié, et c'est fait exprès, ne prêter donc pas attention au code de traitement (php) ni aux deux fonctions jQuery listeAvis et nbrAvis.
Un grande merci par avance à tous ceux qui se pencherons sur mon problème.
NoLimit
EDIT :
J'ai testé ce code :
Si contenuAvis vaut test (ou autre) alors alerte m'affiche Success !
Sinon j'ai bien Failed !
Mais dès lors que je tente de cette façon contenuAvis = $("#contenuAvis").val(), que contenuAvis soit rempli ou non, j'ai toujours le même message de retour
EDITE bis :
J'ai trouvé ! ça fonctionne
J'ai remplacé contenuAvis:contenuAvis par contenuAvis: "contenuAvis" puis finalement par "contenuAvis": contenuAvis
Pouvez-vous m'expliquer pourquoi svp ? j'ai du mal à saisir la syntaxe !
Modifié par NoLimit (08 May 2015 - 20:16)
Je débute avec jQuery, mais j'éprouve quelques difficultés à réaliser mon script.
Il s'agit d'un script de commentaire, voici en quoi il consiste :
1) L'utilisateur rempli le formulaire (html) - pas de problème ici
2) L'utilisateur valide le formulaire
2.1) La liste des commentaires se met à jour ainsi que le nombre de commentaire, et j'affiche également un message de confirmation, ou un message d'erreur dans une balise div qui se réinitialise toute les 5 secondes (jQuery) - de ce côté je n'ai aucun problème
2.2) Le commentaire est envoyé à une page de traitement écrite en php - ici ça bloque, mais le problème n'est pas PHP
Le formulaire :
<div id="statutAvis"></div>
<form action="" method="post">
<textarea id="contenuAvis" name="contenuAvis"></textarea>
<input type="submit" id="envoyerAvis" value="Publiez votre avis !" />
</form>
La page de traitement :
<?php
# Si le champ n'est pas vide
if (!empty($_POST['contenuAvis'])) :
echo 'Success';
# Sinon
else :
echo 'Failed';
endif;
Et enfin, le jQuery
$(document).ready(function()
{
function listeAvis()
{
$('#listeAvis').load('../../systemes/traitements/listeAvis.php');
}
function nbrAvis()
{
$('#nbrAvis').load('../../statiques/javascripts/test.html #majNbrAvis');
}
function statutAvis()
{
setTimeout( function()
{
$('#statutAvis').html('');
statutAvis();
}, 5000);
}
statutAvis(); // On réinitialise le statut
$("#envoyerAvis").click(function(event)
{
event.preventDefault();
var contenuAvis = $("#contenuAvis").val();
// alert(contenuAvis);
$.post("../../systemes/traitements/ajoutAvis.php", { contenuAvis:contenuAvis },
function(data)
{
if (data == "Success") { $("#statutAvis").html("<p>Votre message a été publié !</p>"); }
else { $("#statutAvis").html("<p>Vous n\'avez saisi aucun message !</p>"); }
listeAvis();
nbrAvis();
});
});
});
Le problème est cette ligne :
var contenuAvis = $("#contenuAvis").val();
// alert(contenuAvis);
$.post("../../systemes/traitements/ajoutAvis.php", { contenuAvis:contenuAvis },
Le contenu #contenuAvis est bien récupéré (j'ai fais le test avec une alerte()), mais lorsque je souhaite traiter le formulaire via $_POST['contenuAvis'] celui-ci ne reçoit rien . Je suis bloqué déçu depuis plusieurs heures maintenant, après lecture et relecture de cours et tutoriels, jusqu’à la comparaison de script similaire au mien mais je ne vois vraiment pas d'où peut provenir l'erreur.
Je reçois toujours sur #statutAvis ce message "Vous n\'avez saisi aucun message !" , que le textarea soit rempli ou non, .
J'ai essayé avec la syntaxe $.ajax() et également $.post() et $.get().
En soit le code est simplifié, et c'est fait exprès, ne prêter donc pas attention au code de traitement (php) ni aux deux fonctions jQuery listeAvis et nbrAvis.
Un grande merci par avance à tous ceux qui se pencherons sur mon problème.
NoLimit
EDIT :
J'ai testé ce code :
$(function()
{
$.post("../../systemes/traitements/ajoutAvis.php",
{
contenuAvis: "test"
},
function(data, textStatus)
{
alert("Response from server: " + data);
});
});
Si contenuAvis vaut test (ou autre) alors alerte m'affiche Success !
Sinon j'ai bien Failed !
Mais dès lors que je tente de cette façon contenuAvis = $("#contenuAvis").val(), que contenuAvis soit rempli ou non, j'ai toujours le même message de retour
EDITE bis :
J'ai trouvé ! ça fonctionne
J'ai remplacé contenuAvis:contenuAvis par contenuAvis: "contenuAvis" puis finalement par "contenuAvis": contenuAvis
Pouvez-vous m'expliquer pourquoi svp ? j'ai du mal à saisir la syntaxe !
Modifié par NoLimit (08 May 2015 - 20:16)