J'ai un problème assez étrange sur le retour dune requête Ajax. Requête assez simple qui enregistre un utilisateur dans une base de donnée. Tout s’exécute parfaitement, mais après le traitement php il y a une chaine de caractère qui se met après la valeur. ca sera plus clair avec le code lol...
La fonction Ajax
function submitForm(){
var name = $("#name").val();
var prenom = $("#prenom").val();
var mail = $("#email").val();
var pass = $("#password").val();
$.ajax({
type: "POST",
url:"assets/register.php",
data:
{
myFunction:'doRegister',
myParams:{
name: name,
prenom: prenom,
mail: mail,
pass: pass
}
},
success : function(retour){
alert(retour);
/*
if (retour == "mail") {
$('#msg-erreur').fadeIn().text("Cet e-mail est déjà utilisé");
}
else if (retour == "false"){
$('#msg-erreur').fadeIn().text("Oops! Nous avons rencontré un problème, veuillez réessayer ultérieurement");
}
else{
document.location.href="page-confirm-register.php?mail="+mail;
}
*/
}
});
}
Donc tout s’exécute, l'enregistrement dans la base se fait bien et le problème est sur le "echo $retour;"
Ça me récupère bien la bonne valeur, "mail" ou "success" mais chose étrange ça viens me coller ça juste après: \n\n\n\n\n\n\n\n\n\
Comme je n'arrivai pas à récupérer la valeur echo j'ai mis un alert, et voilà ça que j'ai dans la console
Et la fenêtre de l'alerte ressemble à ça
On voit que ça me récupère la bonne valeur au niveau de la requête, mais on dirait que ça insère tout un tas de retour à la ligne... Je suis incapable de voir d'où ça vient et je n'ai rien trouver sur le sujet.
Et plus incompréhensible encore c'est que j'ai exactement la même structure sur une autre partie du site et que ça ne le fait pas.
Voila voila, si quelqu’un à une idée, moi je cale, j'ai tout retourné dans tous les sens et ya toujours ce truc.autant j'ai oublié une virgule ou une connerie du genre
Déjà, si tu veux savoir si l'insertion s'est bien effectué dans la base de données, il te faut stocker le retour de la méthode execute, et non tester la variable sur laquelle est utilisée la méthode.
La fonction htmlspecialchars n'est à utiliser que pour l'affichage de données.
Il ne faut pas utiliser la méthode rowCount sur une requête pour l'instruction SELECT.
Il ne faut plus utiliser la fonction sha1 pour les mots de passe, plutôt utiliser la fonction password_hash.
Face a quelqu'un pour qui l'on n'éprouve que de l'aversion et du mépris, les yeux d'un homme deviennent extrêmement froids et cruels.
Au niveau de l'insertion dans la base en tout cas ça me remplis bien la table.
Je vais déjà commencer par apporter ces corrections, en plus c'est un site destiné au public alors c'est mieux si ya pas des 'horreurs' lol, j'ai pas un gros niveaux et je me met tout juste à jquery et ajax.
Merci pour ces premières indications, et d’ailleurs ya peut être une première piste, c'est vrai que dans mon autre fonction qui fonctionne, je n'ai pas les htlmspecialchars, je récupère simplement la valeur du champs, ça vient peut être de là.
Et du coup, petite question... étant donné que toute la vérif du formulaire ce fait avant d'être envoyé à php, est ce que je peut simplement récupérer ma variable ? ou ça craint au niveau sécurité pour les injections et je sais pas trop quoi ?
Je reviens faire un retour après ce petit "nettoyage" de code
Et du coup, petite question... étant donné que toute la vérif du formulaire ce fait avant d'être envoyé à php, est ce que je peut simplement récupérer ma variable ? ou ça craint au niveau sécurité pour les injections et je sais pas trop quoi ?
Tu dois également faire les vérifications/validations niveau serveur, soit en PHP dans le cas présent, car rien n'empêche par exemple l'utilisateur de supprimer la pré-validation niveau HTML.
Face a quelqu'un pour qui l'on n'éprouve que de l'aversion et du mépris, les yeux d'un homme deviennent extrêmement froids et cruels.
Je t'ai déjà dit de stocker le retour de la méthode execute dans une variable et non de tester la variable sur laquelle est utilisée la méthode execute, comme tu peux le voir, c'est simplement le statement que tu as avec la variable sur laquelle est utilisée la méthode execute, étant donné que ça fait référence à la requête SQL elle même et non à son exécution.
MickaelCabaud a écrit:
Le "1" après la parenthèse c'est normal ?
Cela correspond à TRUE que retourne la fonction print_r et non par rapport à l'argument qui lui est passé, ça n'a donc rien à voir avec la variable req_ajout_utilisateur.
Face a quelqu'un pour qui l'on n'éprouve que de l'aversion et du mépris, les yeux d'un homme deviennent extrêmement froids et cruels.
Bon... tu va peut être me prendre pour un teubé lol, ça paraît pourtant facile et évident.... mais c'est assez flou pour moi et ça fait des heures que je tourne en rond la dessus... de ce que je comprend il faudrait que j'arrive à isoler seulement le execute(), le mettre dans une variable pour vérifier s'il s’exécute correctement. J'ai fait plein de recherches mais j'arrive pas à trouver un truc clair sur comment récupérer le retour d'une méthode d'exécution...
La finalité de ça c'est pour quoi ? juste me dire si la requête s'exécute et enregistre les données dans la table ? ça n'a pas l'air d'être le problème non ? actuellement les données sont bien enregistrées dans la base, et ensuite je redirige et je me connecte a l'espace membre avec une session, donc on dirait que tout va bien à ce niveau.
Lors de mon retour Ajax et que je teste mon écho $retour j'ai bien le bon message selon le cas. "mail" si je met une adresse existante ou "success" lorsque ça fait l'insertion dans la base. Le problème c'est tous ces n\n\n\n\ après, que ce soit l'un ou l'autre. Or si le problème venait de mon execute, le retour sur "mail" ne serait pas concerné non ? vu que la requête n'est pas lancée...
lol...ben voilà..problème résolu.. c'était bien ça ! Merci AliasDmc
J'aurais pu continuer à me rendre fou longtemps... c'est toujours un truc à la con lol
Et merci à Lartak, ça m'a permis d'améliorer mon code !
Bon je sais toujours pas récupérer le mode d'exécution, et c'est certaint que c'est important de savoir débugger correctement. Mai je compte bien suivre une bonne formation complète sur php et aussi ajax jquery, je commence tout juste et ça ouvre beaucoup de possibilités, passionnant tout ça !
On va profiter du confinement lol, quoique ça ne change pas grand chose personnellement
En tout cas merci à vous deux et faite attention à vous avec cette saloperie qui court....
Sujet clos pour ma part
Ajax: probleme sur le success retour
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Face a quelqu'un pour qui l'on n'éprouve que de l'aversion et du mépris, les yeux d'un homme deviennent extrêmement froids et cruels.
Face a quelqu'un pour qui l'on n'éprouve que de l'aversion et du mépris, les yeux d'un homme deviennent extrêmement froids et cruels.
Face a quelqu'un pour qui l'on n'éprouve que de l'aversion et du mépris, les yeux d'un homme deviennent extrêmement froids et cruels.