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 25/11/2011, 00h34   #1
Invité régulier
 
gdgfs thomas
Inscription : juillet 2010
Messages : 19
Détails du profil
Informations personnelles :
Nom : gdgfs thomas

Informations forums :
Inscription : juillet 2010
Messages : 19
Points : 5
Points : 5
Par défaut probleme avec la fonction xhr

Bonjour,

J'ai crée un panier mais lorsque je clique sur le lien pour exécuter mes 2 fonctions desfois la div ne s'actualise pas mais si j'actualise la page le produit est dans le panier je ne c'est pas d'ou pourrait venir le problème , souvent sa marche ...

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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
<script type="text/javascript">
/*************************************************
 
	Fonction de definition de l'object xhr
 
**************************************************/
 
function new_xhr(){
 
	var xhr_object = null;
 
	if(window.XMLHttpRequest) // Firefox et autres
 
	   xhr_object = new XMLHttpRequest();
 
	else if(window.ActiveXObject){ // Internet Explorer
 
	   try {
 
                xhr_object = new ActiveXObject("Msxml2.XMLHTTP");
 
            } catch (e) {
 
                xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
 
            }
 
	}
 
	else { // XMLHttpRequest non supporté par le navigateur
 
	   alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
 
	   xhr_object = false;
 
	}
 
	return xhr_object;
 
}
 
/*****************************************************
 
	Fonction qui va modifier la viriable de session
 
******************************************************/
 
function change_var(str, str2) {
 
	var xhr2 = new_xhr();//On crée un nouvel objet XMLHttpRequest
 
	xhr2.open("GET", "http://www.avenue-des-affaires.com/pan2/panier.php?action=ajout&p=1&l="+str+"&q="+str2, true);//Appel du fichier externe
 
	xhr2.send();
 
}
 
/////////////////////
function callScript ( scriptName, args ){
 
var xhr_object = null;
 
if(window.XMLHttpRequest) // Firefox
xhr_object = new XMLHttpRequest();
else if(window.ActiveXObject) // Internet Explorer
xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
else { // XMLHttpRequest non supporté par le navigateur
alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
return;
}
 
xhr_object.open("POST", scriptName, true);
 
xhr_object.onreadystatechange = function() {
if(xhr_object.readyState == 4) {
//alert(xhr_object.responseText); // DEBUG MODE
//document.write(xhr_object.responseText);
var div = document.getElementById('contenu');
div.innerHTML = xhr_object.responseText;
}
 
//alert(xhr_object.readyState);
return xhr_object.readyState;
}
 
xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
 
xhr_object.send(args);
 
} 
////////
  </script>
Code :
<p><a href="#" onclick= "change_var( <?php echo ($idproduit.",1");?>);callScript('paniertext.php','path=toto');return false;">ajouter un produit</a> </p>
Pouvez vous m'aider je m'y connais pas trop je suis désoler
thomix68 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/11/2011, 02h18   #2
Membre Expert
 
Avatar de rotrevrep
 
Homme yannick inizan
Secrétaire d'état à la procrastination
Inscription : février 2011
Messages : 304
Détails du profil
Informations personnelles :
Nom : Homme yannick inizan
Âge : 25
Localisation : France, Cher (Centre)

Informations professionnelles :
Activité : Secrétaire d'état à la procrastination
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : février 2011
Messages : 304
Points : 1 118
Points : 1 118
Envoyer un message via MSN à rotrevrep Envoyer un message via Skype™ à rotrevrep
bonsoir
ta façon de récupérer l'objet xhr est différente de la mienne :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
function getXMLHttpRequest() {
	var xhr = null;
 
	if (window.XMLHttpRequest || window.ActiveXObject) {
		if (window.ActiveXObject) {
			try {
				xhr = new ActiveXObject("Msxml2.XMLHTTP");
			} catch(e) {
				xhr = new ActiveXObject("Microsoft.XMLHTTP");
			}
		} else {
			xhr = new XMLHttpRequest(); 
		}
	} else {
		alert("Votre navigateur ne supporte pas l'objet XMLHTTPRequest...");
		return null;
	}
	return xhr;
}
puis dans ta fonction change_var
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
function change_var(str , str2)
{
var xhr = getXMLHttpRequest();
 
xhr.onreadystatechange = function() {
	if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) {
		document.getElementById(taDiv).innerHTML = "trucmuche" // ici s'exécute le code si la requête fonctionne ! :)
	}
};
;
xhr.open("GET", "http://www.avenue-des-affaires.com/pan2/panier.php?action=ajout&p=1&l="+str+"&q="+str2, true);
xhr.send(null);
}
rotrevrep est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/11/2011, 02h22   #3
Membre Expert
 
Avatar de rotrevrep
 
Homme yannick inizan
Secrétaire d'état à la procrastination
Inscription : février 2011
Messages : 304
Détails du profil
Informations personnelles :
Nom : Homme yannick inizan
Âge : 25
Localisation : France, Cher (Centre)

Informations professionnelles :
Activité : Secrétaire d'état à la procrastination
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : février 2011
Messages : 304
Points : 1 118
Points : 1 118
Envoyer un message via MSN à rotrevrep Envoyer un message via Skype™ à rotrevrep
bien sur, à la place du innerHTML, tu peux récupérer xhr.responseText, qui est la valeur texte du résultat de ton code php
ceci doit être le format du document php si tu veux retourner du texte à ton javascript :
Code :
1
2
3
4
5
6
7
8
 
<?php
header('content-type: text/plain');
/*
place ton code php ici :)
*/
echo $toto // ou tout autre variable que tu souhaite afficher
?>
rotrevrep est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/11/2011, 10h50   #4
Invité régulier
 
gdgfs thomas
Inscription : juillet 2010
Messages : 19
Détails du profil
Informations personnelles :
Nom : gdgfs thomas

Informations forums :
Inscription : juillet 2010
Messages : 19
Points : 5
Points : 5
Salut

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
function getXMLHttpRequest() {
	var xhr = null;
 
	if (window.XMLHttpRequest || window.ActiveXObject) {
		if (window.ActiveXObject) {
			try {
				xhr = new ActiveXObject("Msxml2.XMLHTTP");
			} catch(e) {
				xhr = new ActiveXObject("Microsoft.XMLHTTP");
			}
		} else {
			xhr = new XMLHttpRequest(); 
		}
	} else {
		alert("Votre navigateur ne supporte pas l'objet XMLHTTPRequest...");
		return null;
	}
	return xhr;
}
 
function change_var(str , str2)
{
var xhr = getXMLHttpRequest();
 
xhr.onreadystatechange = function() {
	if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) {
		document.getElementById(contenu).innerHTML = "" // ici s'exécute le code si la requête fonctionne ! :)
	}
};
xhr.open("GET", "http://www.avenue-des-affaires.com/pan2/panier.php?action=ajout&p=1&l="+str+"&q="+str2, true);
xhr.send(null);
}
j'ai modifier le code comme ceci est ça ne fonctionne pas es que j'aurais sauter une etape ? Merci de ton aide
thomix68 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/11/2011, 12h54   #5
Rédacteur/Modérateur
 
Avatar de andry.aime
 
Homme Andry Aimé
Inscription : septembre 2007
Messages : 5 139
Détails du profil
Informations personnelles :
Nom : Homme Andry Aimé
Localisation : Ile Maurice

Informations forums :
Inscription : septembre 2007
Messages : 5 139
Points : 7 274
Points : 7 274
Bonjour,

Dans l'appel de la fonction, tu n'as qu'un seul paramètre.
Citation:
document.getElementById(contenu).innerHTML = ""
contenu est déclaré où?

A+.
andry.aime est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 25/11/2011, 16h25   #6
Invité régulier
 
gdgfs thomas
Inscription : juillet 2010
Messages : 19
Détails du profil
Informations personnelles :
Nom : gdgfs thomas

Informations forums :
Inscription : juillet 2010
Messages : 19
Points : 5
Points : 5
Par défaut reponse

Bonjour

je tien a remercier a ceux qui mon aider pour ce problème , j'ai trouver d’où venais ce problème ci bête ...

J'avais tout simplement supprimer la div "contenu" lors de la modification de mon code de mon premier poste ...

Je voulais savoir par contre lorsque je clique sur mon lien la page remonte est il possible d’exécuter le lien sans remonter cette page ?

Merci a tous
thomix68 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/11/2011, 16h38   #7
Rédacteur/Modérateur
 
Avatar de andry.aime
 
Homme Andry Aimé
Inscription : septembre 2007
Messages : 5 139
Détails du profil
Informations personnelles :
Nom : Homme Andry Aimé
Localisation : Ile Maurice

Informations forums :
Inscription : septembre 2007
Messages : 5 139
Points : 7 274
Points : 7 274
Re,

Le tutoriel http://j-willette.developpez.com/tut...ge_2#LII-E-2-a.

A+.
andry.aime est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 25/11/2011, 19h24   #8
Invité régulier
 
gdgfs thomas
Inscription : juillet 2010
Messages : 19
Détails du profil
Informations personnelles :
Nom : gdgfs thomas

Informations forums :
Inscription : juillet 2010
Messages : 19
Points : 5
Points : 5
Par défaut double requete

Bonsoir,

Je viens de remarquer que le script JavaScript ci dessous m'actualise bien ma div "contenu" et ajoute bien l'article mais il m'en mais 2 , car lors de l'actualisation de la div 1 fois + 1 fois lors de l'ajout de l'article ce qui est logique vue que que une URL est présente dans le script

"xhr.open("GET", "/pan2/panieraff.php?action=ajout&p=1&l="+str+"&q="+str2, true);"

Donc si j'ai bien comprit le script utilise la même adresse pour actualiser et ajouter les donné est il possible d'utiliser l'adresse ci-dessus pour ajouter le produit et une autre adresse exemple "/pan2/actualisepanier.php" pour actualiser ?

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
function getXMLHttpRequest() {
	var xhr = null;
 
	if (window.XMLHttpRequest || window.ActiveXObject) {
		if (window.ActiveXObject) {
			try {
				xhr = new ActiveXObject("Msxml2.XMLHTTP");
			} catch(e) {
				xhr = new ActiveXObject("Microsoft.XMLHTTP");
			}
		} else {
			xhr = new XMLHttpRequest(); 
		}
	} else {
		alert("Votre navigateur ne supporte pas l'objet XMLHTTPRequest...");
		return null;
	}
	return xhr;
}
 
function change_var(str , str2)
{
var xhr = getXMLHttpRequest();
 
xhr.onreadystatechange = function() {
	if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) {
		var div = document.getElementById('contenu');
div.innerHTML = xhr.responseText;
	}
};
xhr.open("GET", "/pan2/panieraff.php?action=ajout&p=1&l="+str+"&q="+str2, true);
xhr.send(null);
}
Merci
thomix68 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/11/2011, 20h10   #9
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 793
Points : 35 793
Citation:
Envoyé par rotrevrep Voir le message
bonsoir
ta façon de récupérer l'objet xhr est différente de la mienne :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
function getXMLHttpRequest() {
	var xhr = null;
 
	if (window.XMLHttpRequest || window.ActiveXObject) {
		if (window.ActiveXObject) {
			try {
				xhr = new ActiveXObject("Msxml2.XMLHTTP");
			} catch(e) {
				xhr = new ActiveXObject("Microsoft.XMLHTTP");
			}
		} else {
			xhr = new XMLHttpRequest(); 
		}
	} else {
		alert("Votre navigateur ne supporte pas l'objet XMLHTTPRequest...");
		return null;
	}
	return xhr;
}
Oui, mais ta façon n'est pas à jour

Actuellement, parmi les navigateurs "courants", seul IE6 ne reconnait pas l'objet natif XMLHttpRequest.
Il est donc plus correct de privilégier cet appel en réservant l'activeX aux seuls utilisateurs du navigateur obsolète !
Donc la seconde () version du premier script présenté :
Code :
1
2
3
4
5
6
if(window.XMLHttpRequest)
xhr_object = new XMLHttpRequest();
else if(window.ActiveXObject) // Internet Explorer 6
xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
else { // XMLHttpRequest non supporté par le navigateur
alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
me semble amplement suffisante, à l'exception du alert() : les utilisateurs s'en foutent royalement de savoir si leur navigateur supporte ou non les objets XMLHttpRequest, j'imagine même que la très large majorité ne sait même pas ce que c'est !
__________________
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 10
Vieux 26/11/2011, 20h06   #10
Membre Expert
 
Avatar de rotrevrep
 
Homme yannick inizan
Secrétaire d'état à la procrastination
Inscription : février 2011
Messages : 304
Détails du profil
Informations personnelles :
Nom : Homme yannick inizan
Âge : 25
Localisation : France, Cher (Centre)

Informations professionnelles :
Activité : Secrétaire d'état à la procrastination
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : février 2011
Messages : 304
Points : 1 118
Points : 1 118
Envoyer un message via MSN à rotrevrep Envoyer un message via Skype™ à rotrevrep
Citation:
Envoyé par Bovino Voir le message
Oui, mais ta façon n'est pas à jour
...
Merci !
j'en prends bonne note .
__________________
(marquer un post résolu si vous êtes satisfait de la réponse )
le chat caramail de retour ? :/ http://www.tchats.net/beta.php
les projets web en cours sont sur : https://github.com/rotrevrep
rotrevrep 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 17h53.


 
 
 
 
Partenaires

Hébergement Web