11548 sujets

JavaScript, DOM et API Web HTML5

Solution trouvée après de multiples recherches, une tripotée de tests sur mon application et de longues remises en cause sur mes capacités à coder =D !!
http://javascript.developpez.com/faq/javascript/?page=Ajax#xhr-cache
Le problème vient de la mise en cache des données sorti du XHR !


bonjour, je relance le sujet... et oui le "rafraichir javascript"
je recommence : j'ai mon appli qui permet à l'util de créer des répertoires, de uploader des fichiers et de déplacer ces fichiers vers des répertoires.
Je charge ma liste de fichier dans un div.
Pour déplacer un fichiers, je propose un formulaire composé de la liste des répertoires disponibles et un bouton déplacer vers...
Le formulaire balance les données en POST, et envoie vers la même page. Je teste donc en debut de script si je reçoit ces données c'est donc que je veux déplacer un fichier.
Cela s'effectue grâce à un if qui appelle une fonction qui va update dans ma base de données.
Mon souci maintenant, vient de l'affichage. Mon fichier est bien déplacé dans la base de données mais pas dans mon affichage.

C'est pourquoi je voulais effacer le contenu de mon div pour qu'il ne garde aucune donnée en cache et donc mon div et rappeler normalement dans un vue.

Ma boucle de test en haut du script :

if($_GET['action']=='deplace-file'){
	$file=$_POST['file'];
	$folder=$_POST['folder'];
		
        //fonction update pour la base de données
        deplacer($file,$folder);

}



J'ai testé différentes solutions que j'ai trouvé sur le net :
solution 1

		$("#file").remove();


solution

var container= document.getElementById("corp");
var element= document.getElementById("file");
while (element.firstChild) {
	  container.removeChild(element);
}


aprés mes lignes de test j'appelle donc mon div qui contient ma liste de fichiers :

<div id="file">

</div>


dans lequel on va retrouver un tableau , une cellule = 1fichier.
Le mieux serait donc de rafraichir juste le tableau... mais je suis pas aussi difficile Smiley smile
je voudrais juste effacé tous le div qui sera rappelé par la suite...

Une idée pour mieux faire ??
Modifié par mini-truc (11 May 2011 - 16:03)
Tu utilise jQuery ?

Sinon, tu cible ton élément et hop:


document.getElementById("file").innerHTML = "";


À ce moment l'élément sera vidé.
Non malheureusement je n'utilise pas JQuery dans mon controller, parcontre est il possible d'appeler une fonction qui va vider le contenu sur le submit de mon formulaire ?
J'ai testé à plusieurs endroits ton code certes il marche bien, par exemple sur div contenu_onglet, il me vide tous mon onglet ;p mais du coup il affiche plus rien, j'ai essayé de cibler file mais si je le fais avant il ne le trouve pas et si je le fais pendant rien ne se passe...
le truc bizarre c'est que c'est un problème lié à IE... car avec FFX, safari, opera tout marche nickel !! il déplace bien mon fichier au niveau de l'affichage donc je pense qu'il doit y avoir une commande refresh pour IE qui redémarre les services JS ou qqch du genre non ?
http://javascript.developpez.com/faq/javascript/?page=Ajax#xhr-cache

je sais que je fais de la pub pour la concurrence mais çà fait une semaine que je bosse la dessus et personne n'a trouvé la solution

donc j'espère éviter ainsi un autre développeur à se prendre la tête ^^

la solution est donc de dire au navigateur de ne pas mettre en cache les données ressorties par le XHR !

je savais bien qu'il y avait un problème de cache mais comment deviner quand on ne sait pas Smiley smile