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 11/04/2011, 16h40   #1
Invité de passage
 
Homme
Webmaster
Inscription : avril 2011
Messages : 9
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Webmaster

Informations forums :
Inscription : avril 2011
Messages : 9
Points : 2
Points : 2
Par défaut Ajax - IE8, les solutions ne marchent pas chez moi !

Bonjour à tous,

Je travaille actuellement sur un intranet dans le cadre d'un stage.
Il doit être développé pour IE8 (c'est bien là le hic ...).

J'ai besoin à plusieurs endroits d'utiliser de l'Ajax et et j'ai des problèmes de rafraichissement qui m'énervent car ça ne le fait pas avec FireFox !
Alors oui je sais que le sujet à déjà été traité, qu'il y a des solutions soi disant qui marchent apparemment parce que chez moi, bah non.

Je vous explique :

J'ai une liste de jours feriés comme ceci :



En fait il faut choisir l'année, cliquer sur le bouton OK et le bloc avec la liste apparait (il est caché initialement).

Pour supprimer un jour férié, j'ai fait un lien pour chaque ligne avec un onclick qui renvoie vers la fonction Javascript ci :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
function supprimer_jour_ferie(id, libelle)
{
	if(confirm("La suppression sera définitive ! Êtes-vous certain de vouloir supprimer "+libelle+" ?"))
	{	
		var url = "modele/trait_supprime_jour_ferie.php";
 
		new Ajax.Request(url,
		{
			method: 'post',
			parameters: 'id_jour_ferie='+id,
			onSuccess: function(transport)
			{
				//alert(transport.responseText);
				$("chargement").style.display = "none";
 
				$("bloc_confirmation").style.display = "block";
				setTimeout(function(){$("bloc_confirmation").style.display = "none";}, 2000);
				setTimeout(function(){document.location.href = "index.php?page=gestion_jours_feries"}, 2000);
			}
		}
		);
	}
}

Comme vous le voyez je fais une requête Ajax (j'utilise prototype) qui transmet l'id du jour férié et appelle le traitement "trait_supprime_jour_ferie.php" que voici :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php 
 
 require_once("../modele/modele.php"); 
 
 $modele = New Modele(); 
 $bdd = $modele->connexion(); 
 
 $requete = $bdd->prepare("DELETE FROM jour_ferie WHERE id_jour_ferie = :id_jour_ferie"); 
 $requete->bindValue(":id_jour_ferie", $_POST['id_jour_ferie']); 
 $requete->execute(); 
 
 $bdd = $modele->deconnexion(); 
 
?>

Le fonctionnement marche ce n'est pas ça le problème, mais si je supprime une ligne, IE8 ne met pas à jour la liste (il faut réactualiser super...) et la page reste telle quelle alors que Firefox supprime la ligne, enfin met à jour la liste quoi !

J'ai essayé plein de chose, le coup des headers (genre "header("Cache-Control: no-cache"); " dans tous les fichiers php (je sais pas trop où il faut les mettre), peut être me suis-je trompé d'endroit ?

Le coup de la variable aléatoire dans la page cible, mais là pareil je sais pas si j'ai fait ça au bon endroit, quoique j'ai essayé tellement de combinaison...

Donc voilà si quelqu'un pouvait m'éclairer sur les 2 solutions que je viens d'exposer où si quelqu'un a une autre solution je suis vraiment preneur !

Merci à tous !
Yos 6 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/04/2011, 22h53   #2
Modérateur
 
Avatar de NoSmoking
 
Homme
Inscription : janvier 2011
Messages : 2 933
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : janvier 2011
Messages : 2 933
Points : 4 757
Points : 4 757
Bonsoir,
si c'est un problème de cache
Code :
var url = "modele/trait_supprime_jour_ferie.php" +"?nocache=" +new Date();
devrait régler le problème
NoSmoking est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/04/2011, 00h34   #3
Invité de passage
 
Homme
Webmaster
Inscription : avril 2011
Messages : 9
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Webmaster

Informations forums :
Inscription : avril 2011
Messages : 9
Points : 2
Points : 2
Malheureusement ça ne fonctionne pas, la page reste désespérément figée tant que je ne reclique pas sur le bouton OK
Yos 6 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/04/2011, 10h21   #4
Modérateur
 
Avatar de DoubleU
 
Inscription : janvier 2006
Messages : 1 107
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 1 107
Points : 1 118
Points : 1 118
A mon avis, il y a un truc qui ne va pas dans ce que tu fais: pourquoi faire une requete Ajax, si par derrière tu recharges ta page (cf setTimeout(function(){document.location.href = "index.php?page=gestion_jours_feries"}, 2000); ) ?

Supprime simplement la ligne de ton tableau (si c'est cette structure html que tu as utilisé) dans le onsuccess de ta fonction ajax.
DoubleU est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/04/2011, 10h44   #5
Invité de passage
 
Homme
Webmaster
Inscription : avril 2011
Messages : 9
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Webmaster

Informations forums :
Inscription : avril 2011
Messages : 9
Points : 2
Points : 2
En fait l'instruction qui recharge la page n'y était pas à l'origine, c'était un test pour essayer de rafraichir la page...je l'ai enlevé depuis.

Pour ta soluce, le truc c'est que c'est bien un tableau HTML en effet, mais qui est généré en PHP dans un autre traitement !
Yos 6 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/04/2011, 10h52   #6
Invité de passage
 
Homme
Webmaster
Inscription : avril 2011
Messages : 9
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Webmaster

Informations forums :
Inscription : avril 2011
Messages : 9
Points : 2
Points : 2
Bon ça y est j'ai trouvé !

J'ai mis "asynchronous: false," à ma requête Ajax et maintenant la ligne disparait !
Yos 6 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/04/2011, 10h53   #7
Modérateur
 
Avatar de DoubleU
 
Inscription : janvier 2006
Messages : 1 107
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 1 107
Points : 1 118
Points : 1 118
Peu importe, à partir du moment où le code est généré, et envoyé au client, tu n'as plus que du html à manipuler.

Il te suffit d'utiliser la fonction qui supprime une ligne dans un tableau ([table].removeRow de mémoire).
DoubleU est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/04/2011, 10h57   #8
Invité de passage
 
Homme
Webmaster
Inscription : avril 2011
Messages : 9
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Webmaster

Informations forums :
Inscription : avril 2011
Messages : 9
Points : 2
Points : 2
Ah d'accord, merci en tout cas pour cette solution, je vais la tester également.
Yos 6 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 00h54.


 
 
 
 
Partenaires

Hébergement Web