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/09/2008, 09h25   #1
Membre éprouvé
 
Inscription : mai 2006
Messages : 661
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 661
Points : 462
Points : 462
Par défaut Compatibilité IE / AJAX

Bonjour,

Ce qui suit fonctionne parfaitement sous FF mais à moitié sur IE, je m'explique.

J'ai un tableau et en dessous un formulaire d'ajout. J'ai la possibilité grâce à ce formulaire d'ajouter des informations dans mon tableau (ça crée une ligne à chaque fois et ça "rafraichit" en ajax le tableau), et pour chaque ajout j'ai la possibilité ensuite de supprimer ligne par ligne. Rien de bien compliqué jusque là.

Sur FF, aucun problème, l'ajout et la suppression en AJAX marche, par contre sur IE, petit problème.

Lorsque je valide l'ajout, aucune réaction d'IE, mais pourtant l'insertion en bdd a bien été faite puisque si je fais F5, elle apparait. Par contre, pour la suppression, aucune problème puisqu'elle se fait directement, et là, j'avoue ne pas comprendre pourquoi ça ne "refresh" pas après l'ajout mais pour la suppression oui ??

Code de l'ajout en AJAX :

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
function ajouter(formu)
{
	XmlHttp = getXmlHttpObject();
 
	var edit = formu.edit.value;
	var type_moyen = formu.type_moyen.value;
	if (formu.date.value==""){
	var date = "Non renséigné";
	}
	else
	{
	var date = formu.date.value;
	}
	var etat = formu.etat_avancement.value;
	var intitule = formu.intitule.value;
	var jour_homme = formu.jour_homme.value;
	var cout = formu.cout.value;
	//etc...
	XmlHttp.onreadystatechange=stateChanged;
	XmlHttp.open("GET","actualiser.php?edit="+edit+"&type_moyen="+type_moyen+"&date="+date+"&etat="+etat+"&intitule="+intitule+"&jour_homme="+jour_homme+"&cout="+cout);	
	XmlHttp.send(null);
}
 
function stateChanged()
{
	if(XmlHttp.readyState==4)
	{
		var reg = new RegExp("[;]+", "g");
 
		var resultat = XmlHttp.responseText.split(reg);
 
		var edit = resultat[0];
		var type_moyen = resultat[1];
		var date = resultat[2];
		var etat = resultat[3];
		var intitule = resultat[4];
		var jour_homme = resultat[5];
		var cout = resultat[6];
 
		var tr = document.createElement('tr');	
		tr.setAttribute('class', 'donneetableauut');
		var td0 = document.createElement('td');
		var td1 = document.createElement('td');
		td1.setAttribute('align', 'center');
		var td2 = document.createElement('td');
		td2.setAttribute('align', 'center');
		var td3 = document.createElement('td');
		td3.setAttribute('align', 'center');
		var td4 = document.createElement('td');
		td4.setAttribute('align', 'center');
		var td5 = document.createElement('td');
		td5.setAttribute('align', 'center');
		var td6 = document.createElement('td');
		td6.setAttribute('align', 'center');
 
		td1.appendChild(document.createTextNode(type_moyen));
		td2.appendChild(document.createTextNode(date));
		td3.appendChild(document.createTextNode(etat));
		td4.appendChild(document.createTextNode(intitule));
		td5.appendChild(document.createTextNode(jour_homme));
		td6.appendChild(document.createTextNode(cout));
 
		tr.appendChild(td0);
		tr.appendChild(td1);
		tr.appendChild(td2);
		tr.appendChild(td3);
		tr.appendChild(td4);
		tr.appendChild(td5);
		tr.appendChild(td6);
 
		document.getElementById("divAjout").appendChild(tr);
	}
}
Code de la suppression :

Code :
1
2
3
4
5
6
7
8
 function supprMoyen(r,id)
{
	XmlHttp = getXmlHttpObject();
	var i=r.parentNode.parentNode.rowIndex;
	document.getElementById('divAjout').deleteRow(i);
	XmlHttp.open("GET","suppr_moyen.php?id="+id);	
	XmlHttp.send(null);
}
Herman est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/09/2008, 11h54   #2
Invité de passage
 
Inscription : novembre 2002
Messages : 14
Détails du profil
Informations forums :
Inscription : novembre 2002
Messages : 14
Points : 3
Points : 3
Bonjour,

Dans les options de IE, as tu choisi de toujours vérifier la version de la page (pas de mise en cache). J'ai déjà eu un problème similaire à cause de ça.
Images attachées
Type de fichier : jpg temp.JPG (43,9 Ko, 4 affichages)
ced61 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/09/2008, 13h23   #3
Membre éprouvé
 
Inscription : mai 2006
Messages : 661
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 661
Points : 462
Points : 462
Ça change rien, et en plus de ça ça me fait buguer d'autres pages :s
Herman est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/09/2008, 14h05   #4
Responsable Modération
 
Homme
Inscription : janvier 2007
Messages : 9 316
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Secteur : Finance

Informations forums :
Inscription : janvier 2007
Messages : 9 316
Points : 15 522
Points : 15 522
Bonjour,
certainement un problème de cache quand même.
Voir http://www.developpez.net/forums/d33...nsertion-base/

A+
E.Bzz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/09/2008, 14h35   #5
Membre éprouvé
 
Inscription : mai 2006
Messages : 661
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 661
Points : 462
Points : 462
Dans mon cas je dois le mettre en haut d'actualiser.php c'est ça ?

Parce que si c'est le cas, j'avais déjà cherché et étais tombé plusieurs fois sur cette solution, sans succès. Ça marche toujours pas.
Herman est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/09/2008, 14h56   #6
Responsable Modération
 
Homme
Inscription : janvier 2007
Messages : 9 316
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Secteur : Finance

Informations forums :
Inscription : janvier 2007
Messages : 9 316
Points : 15 522
Points : 15 522
Citation:
Envoyé par Herman Voir le message
Dans mon cas je dois le mettre en haut d'actualiser.php c'est ça ?
Si c'est elle qui génère la réponse : oui.
Ces lignes doivent être les toutes premières de la réponse.

Une autre solution (ci-dessus la ceinture, ci-dessous les bretelles) :
http://javascript.developpez.com/faq...#navig.nocache

A+
E.Bzz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/09/2008, 15h25   #7
Membre éprouvé
 
Inscription : mai 2006
Messages : 661
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 661
Points : 462
Points : 462
Toujours rien : x
Herman est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/09/2008, 15h34   #8
Responsable Modération
 
Homme
Inscription : janvier 2007
Messages : 9 316
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Secteur : Finance

Informations forums :
Inscription : janvier 2007
Messages : 9 316
Points : 15 522
Points : 15 522
Citation:
Envoyé par Herman Voir le message
Toujours rien : x
Ca fonctionne pour tout le monde

Tu devrais chercher ailleurs la cause de ton problème ...

A+
E.Bzz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/09/2008, 15h56   #9
Membre éprouvé
 
Inscription : mai 2006
Messages : 661
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 661
Points : 462
Points : 462
Oui mais si ça marchait pas avec Firefox, j'aurais même pas posté ici, je me serais dit que ça vient de mon code.

Mais là puisque ça marche parfaitement sous FF, je me dit que mon code doit pas être si mauvais que ça : o
Herman est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/09/2008, 16h03   #10
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 13 828
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 828
Points : 35 998
Points : 35 998
En même temps, si un code pouvait être toujours compatible IE/FF, il y aurait beaucoup moins de monde sur ce forum...
__________________
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 11/09/2008, 16h13   #11
Responsable Modération
 
Homme
Inscription : janvier 2007
Messages : 9 316
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Secteur : Finance

Informations forums :
Inscription : janvier 2007
Messages : 9 316
Points : 15 522
Points : 15 522
Citation:
Envoyé par Herman Voir le message
Oui mais si ça marchait pas avec Firefox, j'aurais même pas posté ici, je me serais dit que ça vient de mon code.

Mais là puisque ça marche parfaitement sous FF, je me dit que mon code doit pas être si mauvais que ça : o

Disons d'abord que ce n'est pas parce qu'un code ne fonctionne pas sous IE qu'il est mauvais

Ensuite, le nombre de différences entre IE et FF est suffisant pour obliger à prévoir 2 comportements différents.

Bref, ton code peut être correct (il marche pour FF), mais pas adapté aux "spécificités" () d'IE.

Par exemple, IE confond allègrement name et id.
Or l'un se doit d'être unique et l'autre nom, ce qui fait qu'un code correcte peut, dans certains cas, planter IE.

Aussi, avec le code donné (JS uniquement) pas possible d'analyser plus ...
Au cas où, IE n'aime pas setAttribute(). Essaye plutôt
Code :
1
2
3
4
5
6
7
var tr = document.createElement('tr');	
tr.className = 'donneetableauut';
var td0 = document.createElement('td');
var td1 = document.createElement('td');
td1.style.textAlign = 'center';
var td2 = document.createElement('td');
...
A+
E.Bzz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/09/2008, 16h28   #12
Membre éprouvé
 
Inscription : mai 2006
Messages : 661
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 661
Points : 462
Points : 462
Idem, ça marche sous FF, pas sur IE. J'ai ça côté PHP sinon :

Code :
1
2
3
4
5
6
7
8
9
10
11
<?php
header("Pragma: no-cache");
header("Expires: 0");
header("Cache-Control: no-cache, ");
require('connec.php');
	$date = $_GET['date'];
	$date = explode('/',$date);
	$date =  $date[2] . '-' . $date[1] . '-' .$date[0]; 
mysql_query("INSERT INTO moyen VALUES('', '" . $_GET['edit']. "', '". $_GET['type_moyen'] ."', '". $date ."', '". $_GET['etat'] ."', '". $_GET['intitule'] ."', '". $_GET['jour_homme'] ."', '". $_GET['cout'] ."')");
echo $_GET['edit'].';'.$_GET['type_moyen'].';'.$_GET['date'].';'.$_GET['etat'].';'.$_GET['intitule'].';'.$_GET['jour_homme'].';'.$_GET['cout'];
?>
Herman est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/09/2008, 17h12   #13
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 13 828
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 828
Points : 35 998
Points : 35 998
Tu as essayé de faire un alert du tableau resultat ?
Essaye peut-être :
Code :
var resultat = XmlHttp.responseText.split(';');
__________________
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 12/09/2008, 08h30   #14
Membre éprouvé
 
Inscription : mai 2006
Messages : 661
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 661
Points : 462
Points : 462
Toujours pas Ça marche sous FF, pas sous IE.

(le alert je le case où parce que je l'ai placé à différent endroit et ça m'alert quedale ^^)
Herman est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/09/2008, 08h46   #15
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 13 828
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 828
Points : 35 998
Points : 35 998
Code :
1
2
3
4
5
6
7
8
9
function stateChanged()
{
	if(XmlHttp.readyState==4)
	{
		var reg = new RegExp("[;]+", "g");
 
		var resultat = XmlHttp.responseText.split(reg);
		alert(resultat);
		var edit = resultat[0];
__________________
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 12/09/2008, 10h59   #16
Membre éprouvé
 
Inscription : mai 2006
Messages : 661
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 661
Points : 462
Points : 462
Ah ben je l'avais bien mis au bon endroit, et ça me fait aucun alert ni sur FF ni sur IE.
Herman est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/09/2008, 11h05   #17
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 13 828
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 828
Points : 35 998
Points : 35 998
C'est surprenant ça !
Et dans la console de firebug, il te mets quoi dans l'onglet response ?
Sinon, ta page est en ligne ?

EDIT:
Tu as pensé à CTRL+F5 ?
__________________
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 12/09/2008, 11h13   #18
Responsable Modération
 
Homme
Inscription : janvier 2007
Messages : 9 316
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Secteur : Finance

Informations forums :
Inscription : janvier 2007
Messages : 9 316
Points : 15 522
Points : 15 522
Essaye déjà un
Code :
1
2
3
4
5
	if(XmlHttp.readyState==4)
{
alert(XmlHttp.responseText);
var reg = new RegExp("[;]+", "g");
...
Pour vérifier le format de réception ...

A+
E.Bzz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/09/2008, 11h13   #19
Membre éprouvé
 
Inscription : mai 2006
Messages : 661
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 661
Points : 462
Points : 462
Idem, le alert semble ne pas fonctionner, toujours rien : o

Ce code est dans un function.js auquel je fais appel depuis ma page php de départ, y'a rien d'anormal là dedans au moins ?


Sinon :

Non la page n'est pas en ligne.

Oui je fais toujours CTRL F5 quand je fais ce genre de modif.

Et je peux pas installer firebug sur le poste où je suis
Herman est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/09/2008, 11h18   #20
Responsable Modération
 
Homme
Inscription : janvier 2007
Messages : 9 316
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Secteur : Finance

Informations forums :
Inscription : janvier 2007
Messages : 9 316
Points : 15 522
Points : 15 522
Il doit y avoir une erreur JS avant qui bloque ton code ...
La notification d'erreur de script est activée ?

XmlHttp est bien déclaré en global ?

A+
E.Bzz 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 05h24.


 
 
 
 
Partenaires

Hébergement Web