Page 1 sur 1

appel ajax qui ne se met pas à jour

Posté : 04 déc. 2007, 13:39
par saebakun
Bonjour,

j'ai remarqué un souci sur mon code. Voilà le deal:

voilà la function dans mon <script> de ma page index.php

Code : Tout sélectionner

function update(id){ document.getElementById('formsuivi').style.display='block'; writeId('formsuivi','Chargement en cours'); if(texte = file('./ajax/ajax_updatede.php?id='+escape(id))){ writeId('div_id_ajax',texte); } }
J'utilise donc un fichier php pour réaliser mon code que je renvoie dans mon div. Voilà le ajax_updatede.php:

Code : Tout sélectionner

<?php $data=sql("SELECT * from table where dem_id='".$_GET["id"]."'"); echo $_GET["id"]; ?>
J'applique ma fonction sur un onchange dans un select en prenant le this.value pour la valeur de "id".

Je pousse pas mon code plus loin mais en fait sous Firefox quand je fait une modif sur mon ajax_updatede.php il suffit que je fasse un F5 ou recharger la page la page index.php pour que la modif soit prise en compte alors que sous IE il faut que je ferme IE et que je le réouvre pour que la modif apparaisse.

Voilà y'a-t-il un code spécial sous IE pour qu'il force le refresh du ajax_updatede.php quand je recharge seulement le index.php ?

merci

Posté : 04 déc. 2007, 16:17
par Berzemus
hum.. file() correspond à quoi ?

Posté : 04 déc. 2007, 16:31
par saebakun
en fait sa test si ma fonction renvoie du texte et bien ça l'écrit dans ma div

Posté : 04 déc. 2007, 17:33
par Berzemus
Ah. Alors je veux pas être méchant, mais ton script, ben c'est un peu tout sauf de l'ajax, il me semble.
(ton script m'a tout l'air d'être synchrone. Il n'y a rien d'asynchrone)

Posté : 04 déc. 2007, 17:43
par Truc
Ah. Alors je veux pas être méchant, mais ton script, ben c'est un peu tout sauf de l'ajax, il me semble.
(ton script m'a tout l'air d'être synchrone. Il n'y a rien d'asynchrone)
dépend de la fonction file() :-k

Jette un oeil à ces sujet 1 et 2

Posté : 04 déc. 2007, 18:40
par saebakun
voilà mon file:

Code : Tout sélectionner

function file(fichier){ if(window.XMLHttpRequest){ // FIREFOX xhr_object = new XMLHttpRequest(); }else if(window.ActiveXObject){ // IE xhr_object = new ActiveXObject("Microsoft.XMLHTTP"); }else{ return(false); } xhr_object.open("GET", fichier, false); xhr_object.send(null); if(xhr_object.readyState == 4){ return(xhr_object.responseText); }else{ return(false); } }

Posté : 05 déc. 2007, 11:08
par Berzemus
Ah ben il fallait la poster tout de suite. La, c'est plus clair.

C'est de IE7 que tu parles ? Alors le sujet 1 de truc pourrais t'aider.

Posté : 05 déc. 2007, 11:47
par saebakun
Oui je parle de IE7 ben je jette un oeil un peu plus pousser sur le sujet 1 alors :)

Arf j'ai mis ça du coup mais j'ai le même souci...:

Code : Tout sélectionner

function file(fichier){ if(window.XMLHttpRequest){ // FIREFOX xhr_object = new XMLHttpRequest(); }else if(window.ActiveXObject){ // IE xhr_object = new ActiveXObject("Microsoft.XMLHTTP"+new Date().getTime()); }else{ return(false); } xhr_object.open("GET", fichier, false); xhr_object.send(null); if(xhr_object.readyState == 4){ return(xhr_object.responseText); }else{ return(false); } }
Faut toujours que je ferme IE7 pour qu'il prenne en compte la modif....

Posté : 05 déc. 2007, 12:28
par Berzemus
Je crois plutôt que c'est alors dans ta première fonction qu'il faut introduire le changement:

Code : Tout sélectionner

function update(id){ document.getElementById('formsuivi').style.display='block'; writeId('formsuivi','Chargement en cours'); if(texte = file('./ajax/ajax_updatede.php?id='+escape(id)+'?'+new Date().getTime() { writeId('div_id_ajax',texte); } }

Posté : 05 déc. 2007, 12:29
par saebakun
Je l'ai résolue sans ça c'est bon :D

en fait j'ai mis ça sur ma page php qui est appellé par file() :

header("Cache-Control: no-cache");

Et hop niquel.

Mais je vais essayer ton astuce pour te dire si ça marche attends 5 minutes

Posté : 05 déc. 2007, 12:31
par Truc
Oui je parle de IE7 ben je jette un oeil un peu plus pousser sur le sujet 1 alors :)
Je m'amuse pas à donner des liens pour faire beau hein :-*

Posté : 05 déc. 2007, 12:33
par saebakun
L'autre astuce marche aussi :)

Mais je vais rester sur le

header("Cache-Control: no-cache");

je trouve ça plus propre finalement :)

Et merci truc pour tes liens ^^ mais je démarre sur AJAX et je n'ai pas pu appliquer tes conseils aussi vite que je l'aurais voulu je découvre un peu :D

Merci encore on peut passer en résolue :)

Posté : 05 déc. 2007, 12:38
par Truc
Modération :
saebakun, si ta question est résolue, pense à ajouter le tag [Résolu]
pour indiquer aux personnes qui voudront consulter ce sujet qu'il contient une solution.
Tu peux réaliser cette opération en cliquant sur le bouton Image en haut à gauche de ce sujet.