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 10/02/2012, 23h23   #1
Invité de passage
 
Inscription : avril 2011
Messages : 10
Détails du profil
Informations forums :
Inscription : avril 2011
Messages : 10
Points : 2
Points : 2
Par défaut AJAX/xmlhttprequest ca ne marche pas..

Bonjour à tous,

tout d'abord je vais commencer par m'excuser, car je pense que ce genre de post sur ce genre sujet ça doit plutôt être fréquent sur ce forum. Cependant c'est pour ma pars vraiment mon dernier recours car en effet malgré des dizaines de tutos et une bonne semaine de tentatives de toutes sortes je bloque sur l'utilisation de la classe xmlHTTPrequest dans le cas d'utilisation de la connexion d'un compte sur un site quelconque.

Donc voici mon code source.

Dans le connexion.php
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
<!DOCTYPE html>
<html>
    <head>
 
		login : <input type='text' id='login' value=''/>
<BR>
password : <input type='password' id='password' value=''/>
<BR>
<input type='button' value='Connexion' onclick='valider()'/>
 
 
		<script type="text/javascript">
		function valider ()
		{
		if (document.getElementById("login").value != "" && document.getElementById("password") != "")
		{
 
			alert ("erreur4");
			var xhr = new XMLHttpRequest();
			xhr.open('POST', 'testcompte.php', true); //on on prepare la requete
			xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
			xhr.send('param1=document.getElementById("login").value&param2=document.getElementById("password").value'); //on envoie la requete
 
 
		 xhr.onreadystatechange = function() 
			{
 
    			if (xhr.readyState == 4 && xhr.status == 200) 
				{
		 			if (xhr.responseText)
			 		{
			 			var doc=document.location.href;//l'adresse url
			 			changePageSimple(doc);
						alert (xhr.reponseText);
		 			}
		 			else
		 			{
 
 
		 			}
		 		}
			};
 
 
		}
		else
		{
 
		}
 
		}
 
 
 
 
 
		function changePageSimple(newpage)
		{  
            setTimeout("window.location.href = '"+newpage+"" , 0 ); 
        }
 
		</script>
 
 
    </head>
 
    <body> 
 
    </body>
</html>
Dans le tetcompte.php
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
 
<body>
<?php
try
{
	$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
    $bdd = new PDO('mysql:host=localhost;dbname=customshare', 'root', '', $pdo_options);
 
	$compte = $bdd->prepare('SELECT `login`, `password`, `status` FROM `compte` WHERE login = ? AND password = ?');
	$compte->execute(array($_POST['param1'], $_POST['param2']));
 
	$donnee = $compte->fetch();
 
 
	if ($donnee != FALSE)
	{
		$result = 1;
		$_SESSION['login'] = $donnee['login'];
		$_SESSION['password'] = $donnee['password'];
		$_SESSION['status'] = $donnee['status'];
 
	}
	else
	{
		$result = 0;
	}
 
 
 
}
catch(Exception $e)
{
    die('Erreur : '.$e->getMessage());
}
echo "Pourquoi ?";
?>
 
</body>
</html>
J'attends donc votre aide avec impatience pour me débloquer!

ROTTOT
ROTTOT est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/02/2012, 11h25   #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 786
Points : 35 786
Ben déjà, le contenu de la page, c'est dans le body qu'il faut le mettre, pas dans le head...

Sinon, le problème, c'est quoi exactement ? Parce que "ça ne marche pas", c'est pas l'idéal pour t'aider à déboguer...
__________________
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 actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/02/2012, 13h31   #3
Rédacteur
 
Avatar de jreaux62
 
Homme Jérôme Réaux
Webdesigner
Inscription : août 2008
Messages : 2 994
Détails du profil
Informations personnelles :
Nom : Homme Jérôme Réaux
Âge : 45
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Webdesigner
Secteur : Arts - Culture

Informations forums :
Inscription : août 2008
Messages : 2 994
Points : 5 787
Points : 5 787
Envoyer un message via Skype™ à jreaux62
Bonjour,
je trouve Bovino bien gentil.

Vouloir faire de l'ajax, alors que tu ne maitrises manifestement pas les bases en html...
+ aucune explication de ton "problème"
+ aucun commentaire dans le code
+ manque de cohérence
+ ...
Ca fait beaucoup pour un seul homme.

Un indice ici :
Code :
	$compte->execute(array($_POST['param1'], $_POST['param2']));
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément."
Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique.
Site perso Mes tutos DVP : Gestion-Affichage de Nouvelles - Affichage en tableau HTML - Fonctions de redimensionnement d'images
jreaux62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/02/2012, 15h03   #4
Invité de passage
 
Inscription : avril 2011
Messages : 10
Détails du profil
Informations forums :
Inscription : avril 2011
Messages : 10
Points : 2
Points : 2
Déjà merci de m'avoir répondu.

Ensuite en effet le code ne ressemble a rien (pour le truc du body je sais j'avais la flemme de le bouger sachant que pour tester et comprendre le fonctionnement ca ne change pas grand chose...) mais c'en est bien le but je préfère écrire à "l'arrache" de façon plus simple pour moi pour me permettre de me remettre le problème globalement.

Pour les commentaires je les ai enlevés avant de poster^^

Ensuite pour le problème que j'ai franchement je vois pas comment être plus clair que j'arrive pas a utiliser xmlHttprequest. Si je n'arrive pas a comprendre son fonctionnement et que faire je peux pas vraiment dire ou ça bug...
Je pense juste (et j'en doute) que mon problème viens de la réponse du script testcompte mais je ne pourrais en aucun cas l'affirmer. Juste que occasionnellement quand j'ai une réponse je reçois un undefined.

Pour la ligne cité par jreaux62, juste comme ca le problème ne viendrais pas du fait que je devrais mettre les variables dans une variable locale d'abord?
ROTTOT est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/02/2012, 15h49   #5
Rédacteur
 
Avatar de jreaux62
 
Homme Jérôme Réaux
Webdesigner
Inscription : août 2008
Messages : 2 994
Détails du profil
Informations personnelles :
Nom : Homme Jérôme Réaux
Âge : 45
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Webdesigner
Secteur : Arts - Culture

Informations forums :
Inscription : août 2008
Messages : 2 994
Points : 5 787
Points : 5 787
Envoyer un message via Skype™ à jreaux62
Web 2.0, allez plus loin avec AJAX et XMLHttpRequest

Citation:
Envoyé par ROTTOT Voir le message
... j'avais la flemme de le bouger ...
Moi aussi, j'ai la flemme de répondre...
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément."
Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique.
Site perso Mes tutos DVP : Gestion-Affichage de Nouvelles - Affichage en tableau HTML - Fonctions de redimensionnement d'images
jreaux62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/02/2012, 17h01   #6
Invité de passage
 
Inscription : avril 2011
Messages : 10
Détails du profil
Informations forums :
Inscription : avril 2011
Messages : 10
Points : 2
Points : 2
haha...

C'est très agaçant comme discution enfin c'est pas vraiment une disctution puisqu'elle est à sens unique. En effet si les seuls postes que vous comptez mettre sur ce sujet ne sont pas constructives abstenez vous!
Je préfère largement ne pas avoir de réponse en l'attente de quelqu'un avec un amabilité suffisante pour ouvrir une discution sérieuse et constructive que des réponse inapproprié et d'un ton plutot désagréable.

Et pour guider les personnes qui sy interesse vraiment j'ai fait un test et le problème viendrais plutot de la première page.

De plus j'aimerais confirmation du fait que pour renvoyer une donnée txt on utilise bien le echo?
sinon j'aimerai bien quelques explications supplémentaires sur la façon de renvoyer la réponse du script serveur à la page faisant la requete.
ROTTOT est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/02/2012, 16h59   #7
Candidat au titre de Membre du Club
 
Femme
Inscription : janvier 2012
Messages : 29
Détails du profil
Informations personnelles :
Sexe : Femme

Informations forums :
Inscription : janvier 2012
Messages : 29
Points : 12
Points : 12
Je ne sais pas si ton problème est réglé mais je vais tenter de t'aider à faire ce que tu cherches à réaliser.

Tout d'abord , regarde sur Firebug -> Réseau -> XHR , pour voir si ta page qui contient ta requête est bien appelée (car c'est peut-être un problème de chemin), tu peux également regarder dans l'onglet POST si tes paramètres sont bien passés. En gros grâce à Firebug tu vas pouvoir localiser la source de ton problème , pour ensuite essayer de le résoudre.

Mais il faut bien l'utiliser !

Bonne chance.
Au cas où pour télécharger firebug : https://addons.mozilla.org/fr/firefox/addon/firebug/
Neewd est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/02/2012, 13h32   #8
Invité de passage
 
Inscription : avril 2011
Messages : 10
Détails du profil
Informations forums :
Inscription : avril 2011
Messages : 10
Points : 2
Points : 2
J'ai quelqu'un qui a testé mon code et qui me dis que lui reçois une réponse...

Ensuite les paramètre de mon POST sont en effet mal envoyé, en fait il faut que j'utilise la classe formdata.

Je suppose donc en effet que mon erreur viens finalement de ma page qui exécute le script php puisque je reçois un undefined comme réponse.
Cependant là je ne vois vraiment pas ce qui pose problème...

Et puis sympa l'appli firebug!

ps : avec firebug j'ai une réponse qui correspond à ce que je veux cependant lorsque je fais un alert de la réponse je reçois une undefined comme réponse. so what?

ps: ps : je fais donc mon post ainsi

Code :
1
2
3
4
var form = new FormData();
		form.append('param1', document.getElementById("login").value);
		form.append('param2', document.getElementById("password").value);
xhr.send(form);
et le poste ne fonctionne pas (c'est ce que j'ai remarqué avec firebug.
ROTTOT est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/02/2012, 15h39   #9
Candidat au titre de Membre du Club
 
Femme
Inscription : janvier 2012
Messages : 29
Détails du profil
Informations personnelles :
Sexe : Femme

Informations forums :
Inscription : janvier 2012
Messages : 29
Points : 12
Points : 12
Personnellement je ne sais pas ce qu'est la classe formdata donc je ne sais pas à quoi elle peut servir !
Essaye de nous donner un maximum d'exemple ? Les variables ou la variable que tu envoies à ta page de script sont elles bonnes ? (faire un echo des variables puis un exit() (fonction qui arrête l'exécution de ton code et tu pourras voir le contenu de tes variables.)
Donc tu pourras voir si les variables sont bien passées, si elles le sont bien , et que la réponse est bonne , il faut voir si tu prend la réponse en XML ou en text (reponseXML ou reponsetext) mais aussi ce que tu veux faire réellement de ce que l'on te retourne.

Essaye d'expliquer clairement ce que tu veux faire pour que j'essaye de te donner une base , que tu pourras ensuite ajuster à tes besoins.
Car si tu fais un reponseText et que tu veux afficher les réponses dans des champs déjà existants, ça ne fonctionnera pas , où pas comme il le faut , donc explique tes besoins clairement et je tenterais de t'aider
Neewd est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/02/2012, 16h28   #10
Invité de passage
 
Inscription : avril 2011
Messages : 10
Détails du profil
Informations forums :
Inscription : avril 2011
Messages : 10
Points : 2
Points : 2
Bon alors j'ai enfin résolu mon problème tout d'abord une première erreur toute bête sur le alert qui affiche la réponse j'ai oublié un s pour xhr.responseText ....
ensuite les paramétres passés dans le POST étaient mal formulé (j'ai abandonné le formdata j'arrive pas à l'utiliser avec des variables).
Celà doit être plutot de la forme
Code :
xhr.send('param1='+document.getElementById("login").value+'&param2='+document.getElementById("password").value);
Donc maintenant que j'ai réussi à gérer une simple requête ajax n'ayant pur but de renvoyer qu'un simple texte non structuré et donc avec peu de données exploitables, je me suis mis à essayer de renvoyer les résultats de ma requête sql pour pouvoir les traiter en JS.
Cependant je me retrouve alors confronté à deux problèmes. Le premier pour renvoyer quelque chose je dois le faire sois sous une forme xml soit de texte. J'ai donc choisis de le renvoyer sous forme de teste JSON.
Malheureusement une erreur se produit lorsque que je vois le résultat à l'arrivé. Je me retrouve avec une réponse ou le premier et le troisième nuplet ont disparu. Je me retrouve qu'avec le second.

voici la réponse :

[{"proprietaire":"rott","0":"rott","lien":"mlpoo","1":"mlpoo","localisation":null,"2":null,"nom fichier":"hello worl","3":"hello worl"},false]
(c'est une bdd bidon^^)

Voici donc mon code

partie client
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
xhr.onreadystatechange = function() 
			{
				alert("ca fonctionne");
 
    			if (xhr.readyState == 4 && xhr.status == 200) 
				{
		 			if (xhr.responseText)
			 		{
			 			alert ("erreur7");
 
 
						alert (xhr.responseText);
						donnee = eval('(' + xhr.responseText + ')');//Là je transforme ma reponse JSON en réponse exploitable en JS
						alert ("ouaip");//je n'y accede pas
		 			}
		 			else
		 			{
			 			alert("erreur1");
 
		 			}
		 		}
			};
Ainsi que la partie serveur qui fait la requete sql

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$lien = $bdd->prepare('SELECT * FROM `liens` WHERE proprietaire = ?');
	$lien->execute(array($_SESSION['login']));
 
	$donnee = array();
 
 
	if ($lien != NULL)// je range dans un tableau ma réponse sql
	{
			while ($fet = $lien->fetch()) 
   			{ 
    			$donnee[]=$lien->fetch();
 
    		}
			echo json_encode($donnee);//là je renvoie une réponse organisé avec JSON
 
	}
Je suis pas vraiment sur de bien faire le tableau mais bon.
ROTTOT est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/02/2012, 10h23   #11
Candidat au titre de Membre du Club
 
Femme
Inscription : janvier 2012
Messages : 29
Détails du profil
Informations personnelles :
Sexe : Femme

Informations forums :
Inscription : janvier 2012
Messages : 29
Points : 12
Points : 12
Si la réponse était mal faite , je pense que rien ne serait retourné !
Alors essaye de tester tes variables une par une avant de les mettre en JSON pour voir si elle ne sont pas égale à null.
Si elles le sont, c'est un problème dans ta/tes requetes, sinon c'est que tu as fait une erreur de syntaxe

Je ne suis pas un expert en JSON, moi je l'aurais fait en XML
Neewd est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h29.


 
 
 
 
Partenaires

Hébergement Web