Ajax et fonctions

Résolu/Fermé
ben85350 Messages postés 610 Date d'inscription vendredi 30 mai 2008 Statut Membre Dernière intervention 2 avril 2013 - 20 juil. 2010 à 10:11
ben85350 Messages postés 610 Date d'inscription vendredi 30 mai 2008 Statut Membre Dernière intervention 2 avril 2013 - 20 juil. 2010 à 12:24
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

Defouille Messages postés 388 Date d'inscription mercredi 13 janvier 2010 Statut Membre Dernière intervention 15 novembre 2011 54
20 juil. 2010 à 10:26
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.
0
ben85350 Messages postés 610 Date d'inscription vendredi 30 mai 2008 Statut Membre Dernière intervention 2 avril 2013 27
20 juil. 2010 à 10:44
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.
0
Defouille Messages postés 388 Date d'inscription mercredi 13 janvier 2010 Statut Membre Dernière intervention 15 novembre 2011 54
20 juil. 2010 à 10:59
Le javascript dans ta page php-ajax, ne sera pas appelé, c'est pour ça que tu ne le vois pas.
0
Defouille Messages postés 388 Date d'inscription mercredi 13 janvier 2010 Statut Membre Dernière intervention 15 novembre 2011 54
20 juil. 2010 à 10:54
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).
0
ben85350 Messages postés 610 Date d'inscription vendredi 30 mai 2008 Statut Membre Dernière intervention 2 avril 2013 27
20 juil. 2010 à 11:11
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 ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Defouille Messages postés 388 Date d'inscription mercredi 13 janvier 2010 Statut Membre Dernière intervention 15 novembre 2011 54
20 juil. 2010 à 11:17
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 ?
0
ben85350 Messages postés 610 Date d'inscription vendredi 30 mai 2008 Statut Membre Dernière intervention 2 avril 2013 27
20 juil. 2010 à 11:31
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.
0
Defouille Messages postés 388 Date d'inscription mercredi 13 janvier 2010 Statut Membre Dernière intervention 15 novembre 2011 54
20 juil. 2010 à 11:38
Qu'utilises-tu pour tes appels Ajax ? (JQuery, Prototype, ... ?)
0
ben85350 Messages postés 610 Date d'inscription vendredi 30 mai 2008 Statut Membre Dernière intervention 2 avril 2013 27
20 juil. 2010 à 11:43
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>
0
Defouille Messages postés 388 Date d'inscription mercredi 13 janvier 2010 Statut Membre Dernière intervention 15 novembre 2011 54
20 juil. 2010 à 11:52
Tu as des exemples d'utilisation ici :
https://api.jquery.com/jQuery.ajax/

Mais je trouve ça étrange que "data" ne soit pas reconnue...

La syntaxe parait OK...
0
ben85350 Messages postés 610 Date d'inscription vendredi 30 mai 2008 Statut Membre Dernière intervention 2 avril 2013 27
20 juil. 2010 à 11:59
OK, et quelle est la différence entre
data:({commande : noCommande})
et
data:{commande : noCommande}

Merci pour ton aide !
0
Defouille Messages postés 388 Date d'inscription mercredi 13 janvier 2010 Statut Membre Dernière intervention 15 novembre 2011 54
20 juil. 2010 à 12:05
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
0