Ajax et fonctions

Résolu
Bonjour à tous !
Je travaille actuellement sur une application existante qui utilise PHP et Ajax principalement. Au niveau du PHP, pas de problème, mais pour l'Ajax je débute juste. J'aimerais donc avoir un petit coup de main. Voila le code que j'essaie de comprendre :
function supprimerCommande(noCommande) {
$.ajax({
		type:"POST",
		url:"_vue/commandes/supprimerCommande.php",
		data:{commande : noCommande},
		success:function() {
			$("#toutesCommandes").load("_vue/commandes/listeToutesCommandes.php");
		}
			
	});
}

Dans ma page j'ai un bouton avec supprimerCommande("le numero"). Le fichier js est bien appelé, mais il ne va pas dans le fichier supprimerCommande.php. La redirection se fait bien vers listeToutesCommandes.php.

Merci pour votre coup de main.

6 réponses

  • Votes
  • Date
  • Date décroissante
  1. Bonjour,

    as tu compris le principe d'Ajax ?

    function supprimerCommande(noCommande) {
    $.ajax({
    		type:"POST",
    		url:"_vue/commandes/supprimerCommande.php",
    		data:{commande : noCommande},
    		success:function() {
    			$("#toutesCommandes").load("_vue/commandes/listeToutesCommandes.php");
    		}
    			
    	});
    }


    Pour ton exemple le javascript appelle la page supprimerCommande.php,
    avec la méthode POST (comme s'il s'agissait d'un formulaire) et lui passe en paramètre "commande" avec la valeur noCommande.

    Pour voir ce qui se passe lorsque tu fais ton appel, je te conseille d'installer "FireBug" l'extension FireFox (et Chrome) pour débugger html et javascript.

    le paramètre "success" est la fonction qui est appelé si l'appel ajax se fait correctement, donc si tu nous dis que la redirection se fait bien sur listeToutesCommandes.php, c'est que l'appel c'est bien passé.

    En espérant que tu comprends mieux la mécanique ^^
    Si tu as des questions n'hésite pas, mais encore une fois je te conseille d'installer FireBug.
    1. Merci pour cette réponse rapide. Oui FireBug est déjà installé depuis un petit moment. En effet, la redirection se fait bien sur listeToutesCommandes.php mais pour voir si tout se passais bien, j'ai fait un alert() dans supprimerCommande.php, mais je n'ai aucun retour, de plus cette page supprimer la commande voulu de la base, et après utilisation, rien ne se passe.
      1. Le javascript dans ta page php-ajax, ne sera pas appelé, c'est pour ça que tu ne le vois pas.
    2. Il me semble que tu utilises Jquery pour ton Ajax, dans ce cas modifie ta fonction onsucces pour y ajouter un alert de ce que tu recois de ta page php :

      JAVASCRIPT :
      function supprimerCommande(noCommande) {
      $.ajax({
      		type:"POST",
      		url:"_vue/commandes/supprimerCommande.php",
      		data:{commande : noCommande},
      		success:function(data) {
      			alert('resultat : "'+data+'"');
      			//$("#toutesCommandes").load("_vue/commandes/listeToutesCommandes.php");
      		}
      			
      	});
      }


      PAGE AJAX (supprimerCommande.php)
      <?php echo "Hello world !"; ?>


      Tu devrais avoir un alert avec "Hello world" quand tu cliques sur ton bouton.
      (Sous firebug regarde les pages appelées dans l'onglet console).
      1. alors, j'ai essayé ce que tu m'as dit et :
        - je n'ai pas de alert avec "Hello world"
        - en fait la redirection ne fonctionnais pas, en changeant listeToutesCommandes.php en listeToutes.php par exemple, rien ne change.
        pas contre si je fait
        function supprimerCommande(noCommande) {
        $.ajax({
        		type:"POST",
        		url:"_vue/commandes/supprimerCommande.php",
        		data:{commande : noCommande},
        		success:function(data) {
        			alert('test ');
        			//$("#toutesCommandes").load("_vue/commandes/listeToutesCommandes.php");
        		}
        			
        	});
        }

        j'ai bien le alert "test" Je ne comprends pas... ça viens alors du data ?
        1. En fait "data" correspond à ce que va renvoyer la page php-ajax.
          Si tu fais alert('test'), c'est normal que ça l'affiche puisque 'test' est une chaine en dur.

          Que la redirection ne marche plus c'est normal aussi car "//" veut dire que la ligne est commenté (du coup forcément c'est pas interprété ^^).

          Si data, marche pas c'est que tu es pas sur JQuery :p, ou alors que ta page php-ajax ne renvoit rien.

          As-tu regardé dans l'onglet console de FireBug ce qui se passe quand tu cliques sur ton bouton ?
          1. Voila ce que me dit la console :
            	
            POST ..../_vue/commandes/supprimerCommande.php 200 OK 84ms

            Dans l'onglet réponse j'ai bien "Hello world !"
            mais j'ai l'erreur suivante après :
            data is not defined
              alert('resultat : "'+data+'"'); 

            Que la redirection ne marche plus c'est normal aussi car "//" veut dire que la ligne est commenté (du coup forcément c'est pas interprété ^^).
            Elle ne marchais pas avant non plus en fait, je pensais que ca fonctionnais mais non.
            1. Qu'utilises-tu pour tes appels Ajax ? (JQuery, Prototype, ... ?)
            2. J'ai ceci dans mon fichier index, je pense que c'est ça ce que tu me demande :
              <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script>
              <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js"></script>
              // fichier contenant mes différentes fonctions
              <script type="text/javascript" src="_vue/js/function.js"></script>
              <script type="text/javascript" src="_vue/js/ajaxupload.js"></script>
            3. OK, et quelle est la différence entre
              data:({commande : noCommande})
              et
              data:{commande : noCommande}

              Merci pour ton aide !
            4. Franchement je ne saurais te dire exactement pour ils mettent les parenthèse dans l'exemple...
              Mais apparemment l'erreur ne vient pas de la puisque tu me dis que sur firebug tu vois bien l'appel Ajax, c'est juste la récupération de la réponse qui ne marche pas ici... enfin, je crois :p