Partage
  • Partager sur Facebook
  • Partager sur Twitter

Questions Ajax

Sujet résolu
Anonyme
    12 août 2018 à 22:58:04

    Bonjour,

    J'ai quelques questions concernant le javascript et Ajax. Je débute en front end...

    Quand on utilise Ajax pour questionner une page php lors d'un envoi de formulaire, que devient le fameux

    <form action="page.php" method="POST">
    
    </form>

    Parce que lors de mes tests, pour forcer le formulaire à ne s'envoyer que par Ajax, j'ai du supprimer ces balises.

    Que se passe t'il alors si la page bloque le JS ?

    Est-il possible de laisser l'envoi standard en POST dans le cas où la page ne gère pas le Javascript ?

    Voilà mon code js:

    <script>
        function displayNum(response){
    	    document.querySelector("div.resultat").innerHTML = response;
    	}
    			
    	var button = document.querySelector('input[type="submit"]');
    	button.addEventListener("click", clic);
    	function clic(e){
    		var clubNumber = document.querySelector('input.numero').value;
    		if(clubNumber != null){
    			getAjax("http://localhost/site/modules/getClub.php?numero="+clubNumber, displayNum);
    		}
    	}
    </script>


    Autre question, vous voyez que dans mon code ci-dessus (ligne 11), j'ai fait envoyer à la méthode getAjax, un lien absolu. J'ai essayé de mettre un lien relatif, mais ça ne trouve pas le fichier...

    Voilà le code de ma fonction getAjax:

    function  getAjax(url, callback){
    	var req = new XMLHttpRequest();
    	req.open("GET", url);
    	callback(req.responseText);
    	req.addEventListener("load", function(){
    		if(req.status >= 200 && req.status < 400){
    			callback(req.responseText);
    		}else{
    			console.error(req.status + " " + req.statusText + " " + url);
    		}
    	});
    	req.addEventListener("error", function(){
    		console.error("Erreur réseau avec l'url : " + url);
    	});
    	req.send(null);
    }

    Merci d'avance pour votre aide !

    -
    Edité par Anonyme 12 août 2018 à 23:01:25

    • Partager sur Facebook
    • Partager sur Twitter
      13 août 2018 à 9:40:45

      Bonjour,

      Pour ta première question, c'est possible (mais franchement, qui désactive Javascript maintenant ?), il suffit juste que l'appel à l'action AJax ne se fasse pas par le bouton valider du formulaire. Mais ça me paraît un peu difficile à mettre en place question ergonomie.

      Ensuite, le lien relatif devrait être possible, c'est peu être que tu as mal calculé le chemin (des includes peut-être ?)

      • Partager sur Facebook
      • Partager sur Twitter
        13 août 2018 à 10:16:13

        Pour le formulaire il suffit de désactiver l'envoi (preventDefault ou return false il me semble) et d'appeler Ajax à la place.
        • Partager sur Facebook
        • Partager sur Twitter
        /!\ Si je cesse de répondre c'est parce que vous êtes venus poster sans avoir suivi les cours de base sur le sujet. /!\
        Anonyme
          13 août 2018 à 12:11:07

          Ok merci pour vos réponses, donc c'est clean de laisser les balises form mais de ne rien mettre dans le action="" et de désactiver l'envoi ?
          • Partager sur Facebook
          • Partager sur Twitter
            13 août 2018 à 12:50:19

            Le mieux c'est de mettre un listener sur l'event submit du form et de faire un preventDefault.

            • Partager sur Facebook
            • Partager sur Twitter
            Anonyme
              13 août 2018 à 19:33:10

              Ok merci pour ces éclaircissements !

              Je passe en résolu

              -
              Edité par Anonyme 13 août 2018 à 19:33:17

              • Partager sur Facebook
              • Partager sur Twitter

              Questions Ajax

              × 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.
              • Editeur
              • Markdown