11521 sujets

JavaScript, DOM et API Web HTML5

Bonjour à tous...
Il y a quelques années je m'étais fait aider ici même pour un code qui me posait problème :
Je voulais vérifier que l'entrée que l'on venait de saisir dans un input ne se trouvait pas déjà dans une base de données (histoire de ne pas remplir tout un formulaire avant d'apprendre que le produit existait déjà).
J'avais mis ce code qui fonctionnait de côté et je le reprend aujourd'hui, mais il ne fonctionne plus : rien ne s'affiche !

Le champ input de mon formulaire :

<input type="text" name="nom" id="nom" size="60" maxlength="60" value="" required /><br /><div id="namebox"></div> <br />



Le script commenté en bas de page :

<script type="text/javascript">
$(function(){
    // Cette fonction s'execute une fois tous les éléments de ta page chargés    
    $("#nom").change(function(){
        // cette fonction s'execute au changement de valeur de ton input 
              
        var saisie = $(this).val(); // récupération de la valeur saisie par l'utilisateur         

        $.post("verifaliment.php", { "valeurSaisie" :  saisie })
            .done(function(data){
                 // cette fonction est executée au succès de l'appel ajax
                 // => elle prend en param le contenu de la réponse
                 if (data == 1) {
                    document.getElementById("namebox").innerHTML = 'Attention : cet aliment a déjà été créé' ;
                 }
                 else if (data == 2) {
                    document.getElementById("namebox").innerHTML = ' ';
                 }
            })
            .fail(function(){
                 // cette fonction est executée en cas d'echec de l'appel
                 alert('Vérification de saisie impossible actuellement !');
            });    
   });
});
</script>




La page verifaliment.php appelée pour vérifier :

<?php
echo "string";
if (isset($_POST['valeurSaisie'])){
    // Connexion à la base de données :
    require ('connexion.php');
    // Formatage de la saisie utilisateur :
    $nom = strtoupper($_POST['valeurSaisie']);
    // Requête vérification dans bdd si aliment déjà présent :
    $requete = $bdd->prepare('SELECT aliment_id FROM menu_aliments WHERE aliment_nom = :nom LIMIT 1');
    $requete->execute(array('nom' => $nom));
    $count = $requete->rowCount();

    if($count > 0){     // L'aliment existe déjà dans la base
        $data = 1;
    }
    else {    // L'aliment n'existe pas
        $data = 2;
    }

    // Fermeture connexion
    $requete->closeCursor();
    echo $data;
}
?>




Je ne comprend pas pourquoi ce qui fonctionnait il y a 3 ans ne fonctionne plus aujourd'hui !

Merci d'avance pour vos lumières !
avant ton if post, peux-tu faire un var_dump() de $_POST pour savoir ce qui s'y trouve ? MERCI.
Merci JENCAL de t'intéresser à mon problème...

Le problème il est là, c'est que la page verifaliment.php n'est même pas appelée, c'est pour ça
que j'ai mis mon problème sur la partie JavaScript de ce forum...
Si je mets un alert il n'apparaît même pas, comme si le code n'était pas lu, pourtant juste au
dessus j'ai un script pour cacher/afficher une div qui lui fonctionne bien !


$(function(){
    alert("TEST!"); 
   //Etc...




Edit : mon javascript.enabled de mon Firefox est bien sur true
Modifié par etienne69 (29 Jan 2018 - 14:06)
Effectivement Jquery n'est pas chargé sur cette page...
Vérifié avec ça :
<script type="text/javascript">
    if (typeof jQuery != 'undefined') {
        alert("jQuery est chargée !");
    } else {
        alert("jQuery est introuvable !");
    }
</script>

Pourtant dans le <head> j'ai bien
<script src="/js/jquery.js"></script> et ça fonctionnait il y a 4 ans !
et si tu fait un click droit "open in new tab" sur ton fichier js (dans l'html/inspecteur d'element) ? t-ouvre t-il le fichier ou pas ?
Meilleure solution
Oh merci JENCAL pour ton aide : Je ne sais comment un / s'est glissé dans l'adressage
de la page jquery.js mais en changeant mon lien vers ce fichier comme ceci :
<script src="js/jquery.js"></script>
la boite alerte apparaît bien maintenant.
Ce que je ne comprends pas c'est que j'ai fait un copier/coller d'un site Internet structuré en répertoires qui fonctionnait avant (sans déplacer ni modifier la structure des répertoires ni fichiers donc en conservant l’arborescence ! - Étrange !)
Encore MERCI !
Modifié par etienne69 (30 Jan 2018 - 08:53)