appel ajax qui ne se met pas à jour

Eléphant du PHP | 119 Messages

04 déc. 2007, 13:39

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

ViPHP
ViPHP | 4039 Messages

04 déc. 2007, 16:17

hum.. file() correspond à quoi ?
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.

Eléphant du PHP | 119 Messages

04 déc. 2007, 16:31

en fait sa test si ma fonction renvoie du texte et bien ça l'écrit dans ma div

ViPHP
ViPHP | 4039 Messages

04 déc. 2007, 17:33

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)
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

04 déc. 2007, 17:43

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

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 119 Messages

04 déc. 2007, 18:40

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); } }

ViPHP
ViPHP | 4039 Messages

05 déc. 2007, 11:08

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.
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.

Eléphant du PHP | 119 Messages

05 déc. 2007, 11:47

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....

ViPHP
ViPHP | 4039 Messages

05 déc. 2007, 12:28

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); } }
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.

Eléphant du PHP | 119 Messages

05 déc. 2007, 12:29

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

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

05 déc. 2007, 12:31

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 :-*

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 119 Messages

05 déc. 2007, 12:33

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 :)

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

05 déc. 2007, 12:38

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.

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute