[AJAX] Problème de compatibilité IE
Résolu/Fermé
A voir également:
- [AJAX] Problème de compatibilité IE
- Compatibilite windows 11 - Guide
- Ie tab - Télécharger - Outils pour navigateurs
- Macos big sur compatibilité - Guide
- Google payment ie dublin ✓ - Forum Consommation & Internet
- Ie 11 - Télécharger - Navigateurs
18 réponses
Sous IE il faut appeller la fonction :
header("Cache-Control: no-cache");
au debut de votre fichier php.
Ou alors mettre la meta balise equivalente.
Sinon il ne mettra pas a jour les appels apres le premier.
J'avais le meme probleme, avec ca ca a marche.
J'espere que ca vous aidera.
Fab.
header("Cache-Control: no-cache");
au debut de votre fichier php.
Ou alors mettre la meta balise equivalente.
Sinon il ne mettra pas a jour les appels apres le premier.
J'avais le meme probleme, avec ca ca a marche.
J'espere que ca vous aidera.
Fab.
J'ai été confronté au meme problème pour la création dun gadget vista.
Si vous n'êtes pas maître de la page php appelée, il faut faire varier la requête par exemple en mettent une fausse variable à faire vairer à chaque appel :
counter++;
http.open("GET", "test.php?counter="+counter, true);
C'est pas forcément très propre, mais je n'ai pas trouvé d'autre solution pour "passer outre le cache de IE.
Si vous n'êtes pas maître de la page php appelée, il faut faire varier la requête par exemple en mettent une fausse variable à faire vairer à chaque appel :
counter++;
http.open("GET", "test.php?counter="+counter, true);
C'est pas forcément très propre, mais je n'ai pas trouvé d'autre solution pour "passer outre le cache de IE.
L'idée de mettre une variable get ou post différent grace a un compteur n'est pas bete XD
Mais perso, je vous conseil largement la ptit ligne magique !!
header("Cache-Control: no-cache");
Mettez ca au début de vos page appelée, et vous verez IE7 ne garde plus la première ouverture en CACHE XD
Mais perso, je vous conseil largement la ptit ligne magique !!
header("Cache-Control: no-cache");
Mettez ca au début de vos page appelée, et vous verez IE7 ne garde plus la première ouverture en CACHE XD
Bonjour,
Oui j'ai eu le même problème à savoir: impossible d'effectuer 2 fois de suite une requête (même POST) asynchrone, seule la 1ère marche.
En effet la solution est bien d'affecter la propriété onreadystatechange de l'objet HTTPRequest APRES CHAQUE appel à
sa méthode open(), et avant chaque appel à sa méthode send().
Oui j'ai eu le même problème à savoir: impossible d'effectuer 2 fois de suite une requête (même POST) asynchrone, seule la 1ère marche.
En effet la solution est bien d'affecter la propriété onreadystatechange de l'objet HTTPRequest APRES CHAQUE appel à
sa méthode open(), et avant chaque appel à sa méthode send().
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Squad-G
Messages postés
66
Date d'inscription
vendredi 25 juillet 2008
Statut
Membre
Dernière intervention
25 octobre 2010
5
Modifié par baladur13 le 23/10/2010 à 13:30
Modifié par baladur13 le 23/10/2010 à 13:30
Internet explorer n'aime pas modifier des éléments autre que les « DIV ». Si vous avez un élément par exemple « SPAN » (<span id="test"></span>) et que IE ne veut pas afficher le contenu dedans, mais que dans les autres navigateurs cela fonctionne, essayez de le modifier en « <div id="test"></div> » et testez à nouveau. Cela risque de fonctionner.
J'ajoute ceci à ce vieux sujet, car personne ne l'a mentionné et cela peut être très utile, IE est souvent frustrant grrr !! =)
Signature non conforme ==> Supprimée
Modération CCM
J'ajoute ceci à ce vieux sujet, car personne ne l'a mentionné et cela peut être très utile, IE est souvent frustrant grrr !! =)
Signature non conforme ==> Supprimée
Modération CCM
Bonjour,
j'ai le meme probleme ,
j'ai essayé tout essayé, ca marche des fois et des fois ca ne marche pas !
sous FF ca marche parfaitement
quelqu'un a trouvé une solution efficace et ferme ?
merci pour votre aide
j'ai le meme probleme ,
j'ai essayé tout essayé, ca marche des fois et des fois ca ne marche pas !
sous FF ca marche parfaitement
quelqu'un a trouvé une solution efficace et ferme ?
merci pour votre aide
Bonjour, j'ai aussi le même problème...
J'ai suivi tous les conseil que j'ai lu ici et encore une fois, sous FF tout va bien alors que sous IE, seule la premiere requete passe...
Quelqu'un a une solution ?
Merci d'avance :)
J'ai suivi tous les conseil que j'ai lu ici et encore une fois, sous FF tout va bien alors que sous IE, seule la premiere requete passe...
Quelqu'un a une solution ?
Merci d'avance :)
Salut,
J'ai le même problème que vous.
Mes scripts AJAX fonctionnent sous FireFox, mais avec IE ça ne fonctionne pas.
J'ai essayé avec header("Cache-Control: no-cache"); et ça ne change rien du tout.
Quelqu'un aurait une autre solution svp ?
Merci d'avance.
J'ai le même problème que vous.
Mes scripts AJAX fonctionnent sous FireFox, mais avec IE ça ne fonctionne pas.
J'ai essayé avec header("Cache-Control: no-cache"); et ça ne change rien du tout.
Quelqu'un aurait une autre solution svp ?
Merci d'avance.
La solution que j'ai trouvé est d'ajouter une var aléatoire au bout de ton url.
ex
/////////////////////////////////////////////////
function contenu_panier()
{
var count = Math.random(); /// Math.random sélectionne un nombre entre 0 et 1 ( ex: 0.6489534931546957)
var contenu_panier = CreateXMLHttpRequest ();
var method = 'GET';
var filename = 'includes/contenu_panier.php?session=<?php echo $idsession;?>&count='+count; // ici ajout du résultat de la variable Math.random()
contenu_panier.open(method, filename, true);
contenu_panier.onreadystatechange = function()
{
if(contenu_panier.readyState == 4)
{
var tmp = contenu_panier.responseText;
document.getElementById('panier').innerHTML = tmp;
new Effect.Appear('panier','slide',{duration:0.3});
}
}
contenu_panier.send(null);
}
//////////////////////////
Grâce à cette méthode aucun problème sous IE6/7, Firefox ou Opera.
ex
/////////////////////////////////////////////////
function contenu_panier()
{
var count = Math.random(); /// Math.random sélectionne un nombre entre 0 et 1 ( ex: 0.6489534931546957)
var contenu_panier = CreateXMLHttpRequest ();
var method = 'GET';
var filename = 'includes/contenu_panier.php?session=<?php echo $idsession;?>&count='+count; // ici ajout du résultat de la variable Math.random()
contenu_panier.open(method, filename, true);
contenu_panier.onreadystatechange = function()
{
if(contenu_panier.readyState == 4)
{
var tmp = contenu_panier.responseText;
document.getElementById('panier').innerHTML = tmp;
new Effect.Appear('panier','slide',{duration:0.3});
}
}
contenu_panier.send(null);
}
//////////////////////////
Grâce à cette méthode aucun problème sous IE6/7, Firefox ou Opera.
j'ai eu le meme problème (script ajax qui fonctionne sur firefox mais sur IE j'avais un message "erreur sur la page") :
ce n'est pas lié au cache, le header nocache est une solution simplement pour les soucis de cache via les proxy etc , surtout si vous faites des échanges Aajx en GET (je vous recommande le POST, c'est plus propre et ça laisse moins de trace sur les fichiers de log des proxy et des serveurs , car en GET on voit passer tout les paramatres de la ligne .. ).
en fait c'est lié à la déclaration du mime type et surtout du charset du script php qui renvoie le résultat à votre script ajax , j'ai trouvé la soluce ici :
http://zacly.free.fr/zp/Ajax_erreur_internet_explorer.php
merci
ce n'est pas lié au cache, le header nocache est une solution simplement pour les soucis de cache via les proxy etc , surtout si vous faites des échanges Aajx en GET (je vous recommande le POST, c'est plus propre et ça laisse moins de trace sur les fichiers de log des proxy et des serveurs , car en GET on voit passer tout les paramatres de la ligne .. ).
en fait c'est lié à la déclaration du mime type et surtout du charset du script php qui renvoie le résultat à votre script ajax , j'ai trouvé la soluce ici :
http://zacly.free.fr/zp/Ajax_erreur_internet_explorer.php
merci
Le problème viendrait-il de la définition de la définition de la fonction onreadystatechange dans https://gladiabots.com/?ref=gfx47 ?
Le problème viendrait-il de la définition de la définition de la fonction onreadystatechange dans https://gladiabots.com/?ref=gfx47 ?
Personne :(
zigwen
Messages postés
24
Date d'inscription
mercredi 6 juin 2001
Statut
Membre
Dernière intervention
29 août 2006
29 août 2006 à 16:57
29 août 2006 à 16:57
Salut,
Je suis loin d'être sur de moi, mais c'est pas tout simplement parceque tu as mis en commentaire la création de l'activeX Microsoft.XMLHTTP ?
@+.
Gwen
Je suis loin d'être sur de moi, mais c'est pas tout simplement parceque tu as mis en commentaire la création de l'activeX Microsoft.XMLHTTP ?
@+.
Gwen
Bonjour
Je profite que ce topic existe déjà pour vous exposer un problème que j'ai rencontré en développant une solution ajax pour le site http://generations.fr
Voici le code de ma fonction dans son état actuel :
<script language="JavaScript" type="text/javascript">
function getXhr() {
var xhr = null;
//firefox
if (window.XMLHttpRequest) {
xhr = new XMLHttpRequest();
}
//ie
else if (window.ActiveXObject) {
try {
xhr = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e) {
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
}
//non supporté
else {
alert("Fonction non supportée par le navigateur");
xhr = false;
}
return (xhr);
}
function getTrack()
{
var xhr = getXhr();
//on définit l'appel de la fonction au retour serveur
xhr.onreadystatechange = function() {
if (xhr.readyState == 4 && xhr.status == 200) {
var resultat = xhr.responseText;
document.getElementById('div_track').innerHTML=resultat;
}
};
//on appelle le fichier reponse.txt
xhr.open("GET","http://generationsfm.com/ajax_track.php?act=track",true);
xhr.send(null);
setTimeout("getTrack()", 5000);
}
window.onload=getTrack;
</script>
il n'y a aucun problème sous firefox, mais la mise à jour n'est jamais faite sous ie, même en rafraichissant la page :/
le seul moyen de mettre à jour l'affichage est de relancer le navigateur
voilà si quelqu'un à une idée...
merci !
cordialement
sébastien
Je profite que ce topic existe déjà pour vous exposer un problème que j'ai rencontré en développant une solution ajax pour le site http://generations.fr
Voici le code de ma fonction dans son état actuel :
<script language="JavaScript" type="text/javascript">
function getXhr() {
var xhr = null;
//firefox
if (window.XMLHttpRequest) {
xhr = new XMLHttpRequest();
}
//ie
else if (window.ActiveXObject) {
try {
xhr = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e) {
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
}
//non supporté
else {
alert("Fonction non supportée par le navigateur");
xhr = false;
}
return (xhr);
}
function getTrack()
{
var xhr = getXhr();
//on définit l'appel de la fonction au retour serveur
xhr.onreadystatechange = function() {
if (xhr.readyState == 4 && xhr.status == 200) {
var resultat = xhr.responseText;
document.getElementById('div_track').innerHTML=resultat;
}
};
//on appelle le fichier reponse.txt
xhr.open("GET","http://generationsfm.com/ajax_track.php?act=track",true);
xhr.send(null);
setTimeout("getTrack()", 5000);
}
window.onload=getTrack;
</script>
il n'y a aucun problème sous firefox, mais la mise à jour n'est jamais faite sous ie, même en rafraichissant la page :/
le seul moyen de mettre à jour l'affichage est de relancer le navigateur
voilà si quelqu'un à une idée...
merci !
cordialement
sébastien
Et chez moi ça marche pas :( Pas de rafraichissement après la première donnée envoyée :/
zefoots
Messages postés
146
Date d'inscription
samedi 9 juin 2007
Statut
Membre
Dernière intervention
11 septembre 2007
62
9 août 2007 à 23:54
9 août 2007 à 23:54
Salut,
pour ceux que ça intéresse, même problème avec Opera ... et même solution que celle utilisée pour IE
pour ceux que ça intéresse, même problème avec Opera ... et même solution que celle utilisée pour IE
en gros bourrin ayant eut le meme probleme , j'avais rajouté un random en GET
merci pour cette solution :)
merci pour cette solution :)
Ca ne marche pas pour moi avec
header('Cache-Control: no-store, no-cache, must-revalidate'); dans le fichier principal. Apres le 1er chargement je ne recharge que des Div et donc jamais l'instruction header.
Est-ce que cette instruction doit etre dans chaque fichier php meme celui pour recharger un DIV
header('Cache-Control: no-store, no-cache, must-revalidate'); dans le fichier principal. Apres le 1er chargement je ne recharge que des Div et donc jamais l'instruction header.
Est-ce que cette instruction doit etre dans chaque fichier php meme celui pour recharger un DIV
5 avril 2008 à 00:43
je commencais à faire des requetes via XmlHttpRequest...
A chaque lancement de la fonction une requete SQL via une autre page php
et mon pb etait que sous IE j'avais un souci par rapport
à mozilla et opera resolu par le fait d'inserer la commande suivante:
header("Cache-Control: no-cache");
la requete ne se lancait que lors du premier lancement du script js. sous IE.
m'enfin ca a l'air de fonctionner . Tu as du en dépatouiller plus d'un.
MERKI enkore une fois.
Bonne continuation
Julien
1 oct. 2010 à 14:37
1 oct. 2010 à 15:06
1 avril 2011 à 19:48
7 juil. 2011 à 01:41
ex : <meta http-equiv="X-UA-Compatible" content="IE=7">