Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > AJAX
AJAX Forum sur la programmation AJAX. Avant de poster : Cours AJAX, FAQ AJAX, Toutes les FAQ JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 29/12/2011, 15h13   #1
Invité régulier
 
Homme Estéban Mougnaud
Étudiant
Inscription : décembre 2011
Messages : 29
Détails du profil
Informations personnelles :
Nom : Homme Estéban Mougnaud
Âge : 20
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : décembre 2011
Messages : 29
Points : 9
Points : 9
Par défaut Bouton de sauvegarde (ajax)

Bonjour,

Je souhaiterais effectuer une sauvegarde d'une commande en cliquant sur un bouton. J'ai déjà fais mon traitement qui m'appelle une page js qui appelle une page php grâce à Ajax. Jusqu'ici tout fonctionne.

Mon problème est que mes $_POST ne peuvent être utilisés dans ma page appelée ... je peux toujours utiliser des variables de session mais j'aimerais éviter puisqu'il y a pas mal de champs dans mon formulaire.

Si quelqu'un à une solution ou même une aide, qu'il m'en fasse part je suis perdu
Si vous avez besoin du code dites le moi
lamb87 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/12/2011, 10h34   #2
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 13 808
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 41
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juin 2008
Messages : 13 808
Points : 35 787
Points : 35 787
Citation:
Mon problème est que mes $_POST ne peuvent être utilisés dans ma page appelée ...
Ah bon... pourquoi ?

Citation:
Si vous avez besoin du code dites le moi
Disons que sans le code, ça rend un peu plus compliqué de voir où se situe ton problème
__________________
Pas de question technique par MP !
Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, contactez-moi !
Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
Mon livre sur jQuery
Bovino est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/12/2011, 11h04   #3
Invité régulier
 
Homme Estéban Mougnaud
Étudiant
Inscription : décembre 2011
Messages : 29
Détails du profil
Informations personnelles :
Nom : Homme Estéban Mougnaud
Âge : 20
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : décembre 2011
Messages : 29
Points : 9
Points : 9
Bonjour,

Oui je suis d'accord que sans les codes ben ... c'est pas facile

Les POST ne fonctionnent pas parce que lorsque je valide mon formulaire, je suis redirigé vers une page qui montre un descriptif de la commande et l'utilisateur peut, si il le souhaite, sauvegarder sa commande sans la passer.
Mais le fait est que pour sauvegarder, j'appel un fichier js qui contient mon code Ajax qui lui même va chercher le fichier php qui contient les requêtes. Mais les post ne vont pas jusqu'à cette page. J'utiliserais bien des variables de session mais j'aimerais savoir si c'est optimisable.

Voici ma page qui reçoit le formulaire :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<?php
	session_start();
	$_SESSION['prenom'] = 'root';
?>
<!DOCTYPE HTML PUBLIC "-//W3C//Dtd HTML 4.01 transitional//EN" "http://www.w3.org/tr/HTML4/loose.dtd">
<HTML>
<HEAD>
	<meta http-equiv="Content-Type" content="text/HTML; charset=UTF-8">
	<title>D&eacute;tail de votre commande</title>
	<script src="../js/Ajax.js" type="text/javascript"></script>
</HEAD>
<BODY>
 
	<h1>D&eacute;tail de votre commande : </h1>
 
	<form action="CommandeEnCours.php" method="post">
    	<table>
	    	<tr>
	        	<th>Nom du fichier</th>
	            <th>Extension</th>
	            <th>Nombre de pages</th>
	        </tr>
	        <tr>
	        	<td><?php echo "" . $_SESSION['fnom'] . "";?></td>
	        	<td></td>
	        	<td></td>
	        </tr>
		</table>
 
		Niveau d'urgence :
		<select name="Niveau">
						<option value="" ></option>
						<option value="" ></option>
		</select>
		<br><br>
		<button type="button" name="SauvegarderCommande" OnClick="Save()">Sauvegarder</button>
		<button type="submit" name="envoyer">Envoyer</button>
		<button type="reset">Annuler</button>
	</form>
 
</BODY>
</HTML>
Mon script js :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
function getXhr()
{
    var xhr = null; 
	if(window.XMLHttpRequest) // Firefox et autres
	xhr = new XMLHttpRequest(); 
	else if(window.ActiveXObject)
		{ 
			// Internet Explorer 
			try {
			    xhr = new ActiveXObject("Msxml2.XMLHTTP");
			} catch (e) {
			    xhr = new ActiveXObject("Microsoft.XMLHTTP");
			}
		}
	else 
		{ 
			// XMLHttpRequest non supporté par le navigateur 
			alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
			xhr = false; 
		} 
        return xhr;
}
 
/*****************************************************
 ** Méthode qui sera appelée sur le click du bouton **
 ** pour appeler la page php à traiter avec Ajax    **
 *****************************************************/
function Save()
{
	var xhr = getXhr();
	// On défini ce qu'on va faire quand on aura la réponse
	xhr.onreadystatechange = function()
	{
		// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
		if(xhr.readyState == 4 && xhr.status == 200)
		{
			alert(xhr.responseText);
		}
	};
	xhr.open("GET","../php/SauvCommande.php",true);
	xhr.send(null);
}
Et finalement ma page appelée par ajax:
Code :
1
2
3
4
5
6
7
8
9
10
11
<?php
	echo "Commande sauvegardee";
	$i=0;
	while(isset($_POST["type"+$i]))
	{
		echo $_POST["type"+$i]."<br/>";
	}
	include '../class/Autoload.php';
	$commande = new Commande();
	$commande->AjouterCommande();
?>
lamb87 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/12/2011, 06h07   #4
Rédacteur/Modérateur
 
Avatar de andry.aime
 
Homme Andry Aimé
Inscription : septembre 2007
Messages : 5 145
Détails du profil
Informations personnelles :
Nom : Homme Andry Aimé
Localisation : Ile Maurice

Informations forums :
Inscription : septembre 2007
Messages : 5 145
Points : 7 282
Points : 7 282
Bonjour,

Citation:
xhr.open("GET","../php/SauvCommande.php",true);
Citation:
while(isset($_POST["type"+$i]))
1- Si tu veux utiliser la méthode GET, tu dois concaténer les données avec l'URL. Par contre si tu utilises la méthode POST, tu dois les concaténer dans le paramètre de la methode send.
2- avec ton code, tu appelles la page en GET sans donnée et tu veux récupérer des trucs dans $_POST. L'ajax ne fait pas de magie .

Je te conseille de relire de tutoriels.

A+.
andry.aime est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 02/01/2012, 08h55   #5
Invité régulier
 
Homme Estéban Mougnaud
Étudiant
Inscription : décembre 2011
Messages : 29
Détails du profil
Informations personnelles :
Nom : Homme Estéban Mougnaud
Âge : 20
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : décembre 2011
Messages : 29
Points : 9
Points : 9
Bonjour,

Je me disais bien que cela pouvais provenir du fameux GET ... Que voulez-vous dire par la méthode send ?
Je pense aussi que çà peut venir du fait que le bouton de sauvegarde ne soit pas du type submit puisque je ne veut pas qu'il soumette le formulaire. Je veux juste que l'utilisateur puisse enregistrer sa commande sans l'envoyer. En effet, lors de la validation du formulaire j'envoie un mail, et donc si il l'enregistre, il n'est pas obliger de l'envoyer.
lamb87 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/01/2012, 09h15   #6
Membre régulier
 
Étudiant
Inscription : octobre 2010
Messages : 92
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : octobre 2010
Messages : 92
Points : 78
Points : 78
Bonjour, il faut utiliser cette façon de faire :

Code :
1
2
3
4
 var data = "file=" + url +  "&content=" + content;
 xhr.open("POST", "ajax-post-text.php", true);
 xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");  
 xhr.send(data);
Pour faire simple, en POST il faut passer les paramètres dans le send().
zeclad01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/01/2012, 11h01   #7
Invité régulier
 
Homme Estéban Mougnaud
Étudiant
Inscription : décembre 2011
Messages : 29
Détails du profil
Informations personnelles :
Nom : Homme Estéban Mougnaud
Âge : 20
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : décembre 2011
Messages : 29
Points : 9
Points : 9
J'ai mis le send mais maintenant quand je clique sur le bouton il ne m'affiche plus rien alors qu'il devrait au moins afficher mon echo
lamb87 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2012, 06h05   #8
Rédacteur/Modérateur
 
Avatar de andry.aime
 
Homme Andry Aimé
Inscription : septembre 2007
Messages : 5 145
Détails du profil
Informations personnelles :
Nom : Homme Andry Aimé
Localisation : Ile Maurice

Informations forums :
Inscription : septembre 2007
Messages : 5 145
Points : 7 282
Points : 7 282
Bonjour,

Peut-on voir ton code actuel?

A+.
andry.aime est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2012, 09h46   #9
Invité régulier
 
Homme Estéban Mougnaud
Étudiant
Inscription : décembre 2011
Messages : 29
Détails du profil
Informations personnelles :
Nom : Homme Estéban Mougnaud
Âge : 20
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : décembre 2011
Messages : 29
Points : 9
Points : 9
Bonjour,

Voici ma page qui reçoit les Post :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<?php
	session_start();
	$_SESSION['prenom'] = 'root';
?>
<!DOCTYPE HTML PUBLIC "-//W3C//Dtd HTML 4.01 transitional//EN" "http://www.w3.org/tr/HTML4/loose.dtd">
<HTML>
<HEAD>
	<meta http-equiv="Content-Type" content="text/HTML; charset=UTF-8">
	<title>D&eacute;tail de votre commande</title>
	<script src="../js/Ajax.js" type="text/javascript"></script>
</HEAD>
<BODY>
 
	<h1>D&eacute;tail de votre commande : </h1>
 
	<form action="CommandeEnCours.php" method="post">
    	<table>
	    	<tr>
	        	<th>Nom du fichier</th>
	            <th>Extension</th>
	            <th>Nombre de pages</th>
	        </tr>
	        <tr>
	        	<td><?php echo "" . $_SESSION['fnom'] . "";?></td>
	        	<td><?php echo "" . $_SESSION['fextension'] . "";?></td>
	        	<td></td>
	        </tr>
		</table>
 
		Niveau d urgence :
		<select name="Niveau">
			<option value="" ></option>
			<option value="" ></option>
		</select>
		<br><br>
		<button type="button" name="SauvegarderCommande" OnClick="Save()">Sauvegarder</button>
		<button type="submit" name="envoyer">Envoyer</button>
		<button type="reset">Annuler</button>
	</form>
</BODY>
</HTML>
Ma page js/ajax appelé lors du clique du bouton:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
function getXhr()
{
    var xhr = null; 
	if(window.XMLHttpRequest) // Firefox et autres
	xhr = new XMLHttpRequest(); 
	else if(window.ActiveXObject)
		{ 
			// Internet Explorer 
			try {
			    xhr = new ActiveXObject("Msxml2.XMLHTTP");
			} catch (e) {
			    xhr = new ActiveXObject("Microsoft.XMLHTTP");
			}
		}
	else 
		{ 
			// XMLHttpRequest non supporté par le navigateur 
			alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
			xhr = false; 
		} 
        return xhr;
}
 
/*****************************************************
 ** Méthode qui sera appelée sur le click du bouton **
 ** pour appeler la page php à traiter avec Ajax    **
 *****************************************************/
function Save()
{
	var xhr = getXhr();
	// On défini ce qu'on va faire quand on aura la réponse
	xhr.onreadystatechange = function()
	{
		// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
		if(xhr.readyState == 4 && xhr.status == 200)
		{
			alert(xhr.responseText);
		}
	};
	var data = "file=" + url +  "&content=" + content;
	xhr.open('POST','../php/SauvCommande.php',true);
	xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");  
	xhr.send(data);
}
et enfin ma page appelé par ajax :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
<?php
	echo "Commande sauvegardee";
	$i=0;
	while(isset($_POST["type"+$i]))
	{
		echo $_POST["type"+$i]."<br/>";
	}
	//var_dump($_POST);
	include '../class/Autoload.php';
	$commande = new Commande();
	$commande->AjouterCommande();
?>
Je pense que mon problème viens du fait que je ne fais pas appel au Post directement sur la page qui reçoit le formulaire
lamb87 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2012, 09h55   #10
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 13 808
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 41
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juin 2008
Messages : 13 808
Points : 35 787
Points : 35 787
Je pense que parmi tes résolutions pour 2012, tu pourrais ajouter : "Lire un tutoriel sur AJAX", ne serait-ce qu'histoire de comprendre ce que tu envoies comme informations et comment les récupérer...

Code :
var data = "file=" + url +  "&content=" + content;
url et content ne sont définis nulle part, peut-être une implémentation de la classe ChapeauMagique ?

Code php :
while(isset($_POST["type"+$i]))
Encore un tour de magie ?
Tu transformes "file" et "content" en "type" ?
__________________
Pas de question technique par MP !
Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, contactez-moi !
Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
Mon livre sur jQuery
Bovino est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2012, 11h53   #11
Invité régulier
 
Homme Estéban Mougnaud
Étudiant
Inscription : décembre 2011
Messages : 29
Détails du profil
Informations personnelles :
Nom : Homme Estéban Mougnaud
Âge : 20
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : décembre 2011
Messages : 29
Points : 9
Points : 9
Résolution déjà prise ! C'est juste que j'ai pas mis mon bon code en fait
Je l'ai modifié mais çà ne marche pas.
J'ai abandonné cette idée de sauvegarde mais j'aimerais quand même savoir comment faire.

Je voudrais juste savoir si je dois mettre mes post dans le content parce que j'ai pas tout compris là dans le tuto
lamb87 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2012, 10h34   #12
Invité régulier
 
Homme Estéban Mougnaud
Étudiant
Inscription : décembre 2011
Messages : 29
Détails du profil
Informations personnelles :
Nom : Homme Estéban Mougnaud
Âge : 20
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : décembre 2011
Messages : 29
Points : 9
Points : 9
Bonjour,
Je reviens sur cet ancien post juste pour signaler que je commence à bien maitriser l'Ajax grâce à vos Tutoriels !
Disons que si je n'y arrivais pas c'était plus par manque de patience qu'autre chose
Mais c'est bon tout mes traitements fonctionnent et je vous remercie encore une fois
lamb87 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h14.


 
 
 
 
Partenaires

Hébergement Web