[Javascript] Problème rechargement iframe

Résolu/Fermé
Kitty-cat Messages postés 141 Date d'inscription vendredi 9 novembre 2007 Statut Membre Dernière intervention 6 août 2008 - 13 déc. 2007 à 14:09
kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 - 14 déc. 2007 à 11:20
Bonjour bonjour.

Je travaille actuellement sur une GED en PHP avec l'un de mes collègues qui lui aussi est programmeur junior. (Je dirais même plus qu'on est encore étudiants, 'fin bref). Dans un souci d'optimisation, nous souhaitons minimiser le plus possible les rechargements de page. (Avouez qu'il n'est pas très sérieux de recharger la page à chaque fois que l'on clique sur un dossier de l'arborescence.)

Pour ceci, nous avons décidé d'utiliser deux iframes. Celle de gauche qui affiche le treeview, celle de droite qui est sensé afficher les fichiers contenus dans les dossiers. La méthode utilisée pour cela est d'envoyer dans l'url de la frame une variable "Path", qui sera récupérée dans l'autre frame, via un $_GET['Path'].

Nous avons décidé de coder cet envoie en javascript de la façon suivante :

echo indentation($niveau) . "<img src=\"directory.png\" onclick=\"plidepli('".str_replace($replace,"",$str)."')\"> <input type='button' class= 'repertoire' value= '". $str2 ."' <script language = 'javascript'> onclick= parent.frames['\"/contenu.php?path=.'". $tableau ."'\"'].location.reload(); </script><br />\n";

Le problème est qu'évidemment, cela ne fonctionne pas. Nous voudrions donc savoir où se situe l'erreur que nous avons commise, et si possible, que l'on nous explique comment réparer cette erreur.

D'avance je remercie tous ceux qui nous répondront.

Cordialement,

Kitty-cat

35 réponses

kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
13 déc. 2007 à 17:08
Ca me semble plutot normal. Il y a une erreur de ' dans le onclick (my mistake, sorry).

Sinon il faut remplacer $tableau par ce que tu veux (car effectivement $tabeau est un tableau php, d'ou le fait qu'il te marque le type, remplace la ligne ou il y a le onclick par ca :
echo indentation($niveau) . "<img src=\"directory.png\" onclick=\"plidepli('".str_replace($replace,"",$str)."')\"> <input type='button' class= 'repertoire' value= '". $str2 ."' onclick= \"callScript('traitement.php','path=".$str."')\"><BR>&qu ot;";


EDIT: Plus rapide que moi sur ce coup :), tu n'as donc plus qu'à supprimer le ' en trop (remplace directe par ce que j'ai donné)
0
Kitty-cat Messages postés 141 Date d'inscription vendredi 9 novembre 2007 Statut Membre Dernière intervention 6 août 2008 10
13 déc. 2007 à 17:19
Raté encore une fois XD

Il me met maintenant que mon div "has no properties". (Sans doute est-ce pour cela qu'il m'affiche le message d'erreur au mauvais endroit) Et persiste à me récupérer un path vide j'ai l'impression. Car quand je demande de faire un echo de la valeur de path dans la page php "Traitements", ca me renvoie rien du tout.
0
kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
13 déc. 2007 à 17:23
Pour le "Path" c'est normal, c'est parce que dans la méthode CallScript je le donne au script PHP via POST et non GET ^^
Donc si tu rectifie comme ceci dans la méthode callScript :
xhr_object.open("POST", scriptName, true);


en :
xhr_object.open("GET", scriptName, true);


Ca devrait mieux fonctionner.
Pour ce qui est du message d'erreur par contre j'ai besoin de savoir exactement ou et le message en entier (message javascritp donc j'imagine)
0
kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
13 déc. 2007 à 17:24
En fait ton autre erreur est du au nommage de ta div... attention j'ai dit '<div id="contenu"> ' (sans majuscule), c'est pas pour rien ;)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Kitty-cat Messages postés 141 Date d'inscription vendredi 9 novembre 2007 Statut Membre Dernière intervention 6 août 2008 10
13 déc. 2007 à 17:28
Mon collègue y avait pensé aussi, mais non non, j'ai bien nommé le div "contenu" aussi.

PS : Et comme un imbécile, j'ai oublié de rappeler ma css. Problème de div reglé, reste à récupérer un path non vide maintenant ^^
0
kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
13 déc. 2007 à 17:32

Pour le path non vide j'ai donné la solution un poil plus haut et ca devrait fonctionner normalemment.
0
kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
13 déc. 2007 à 17:38
Sinon faudrait que tu mette des traves pour voir ou le prog passe dans le code et avec quelle valeur, afin de déterminer ou est ce qu'il perd la valeur du PATH

Par exemple tu peux afficher sa valeur dans la fonction javascript callScript juste avant d'envoyer les données :
 alert(args);
 xhr_object.send(args); 


Et en début de script PHP, dans 'traitement.php' :
echo "<script language='javascript'>alert('".$_GET['path']."');</script>";
$path = isset($_GET['path']) ? $_GET['path'] : '';
0
Kitty-cat Messages postés 141 Date d'inscription vendredi 9 novembre 2007 Statut Membre Dernière intervention 6 août 2008 10
13 déc. 2007 à 17:39
Désolé, j'm'en voulais tellement d'avoir oublié de rappeler ma css que j'ai pu vu que tu avais répondu entre temps ^^'

Néanmoins, si je passe tout en post, cela m'affiche un bon gros "0". En get, cela continue à m'afficher "Rien à afficher".
0
kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
13 déc. 2007 à 17:44
Je te conseille de toute manière de tout repasser en POST, c'est toujours ca de gagner niveau sureté.
Et puis au moins on a quelque chose même si c'est un bon gros 0 XD

Une fois tout repasser en POST, peux-tu vérifier la chose suivante : essayer de passer en dure une valeur bidon à PATH pour voir ce qu'il affiche dans le script PHP, ex :
callScript('traitement.php','path=toto')


Ca permettra de savoir si ca fonctionne et si oui, ca voudra dire que ce n'est pas la bonne variable qui est passée.
Dans le cas contraire... faut encore chercher ^^
0
Kitty-cat Messages postés 141 Date d'inscription vendredi 9 novembre 2007 Statut Membre Dernière intervention 6 août 2008 10
13 déc. 2007 à 17:46
Il le perd entre les deux pages apparemment. Car avec le premier alert, ca me met mon path (Crypté en base 64 soit), alors que si je ne met que le deuxième, il n'affiche rien.

Même en mettant un path bidon, avec la méthode post, il s'obstine à m'afficher un 0.
0
kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
13 déc. 2007 à 17:56
Ben écoute... je vois pas trop pourquoi il perd la valeur entre les deux, peut etre une configuration du navigateur peut etre ?
Bon, j'ai fini mon service pour ce soir :D donc a demain si tu n'as toujours pas trouvé pourquoi ca bug.

Bon courage di'ci là
0
Kitty-cat Messages postés 141 Date d'inscription vendredi 9 novembre 2007 Statut Membre Dernière intervention 6 août 2008 10
13 déc. 2007 à 17:59
Je te remercie ;) J'comptais rentrer chez moi aussi ^^

Et il me semble pourtant bien avoir passé les variables globales à ON.

'fin bref, bonne soirée à toi l'ami ;)
0
kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
13 déc. 2007 à 18:02
Au pire des cas tu peux rester en passant tout à GET, mais cette fois en updatant cette partie du code :
xhr_object.open("GET", "ajax2.php", false);
0
Kitty-cat Messages postés 141 Date d'inscription vendredi 9 novembre 2007 Statut Membre Dernière intervention 6 août 2008 10
14 déc. 2007 à 10:12
J'ai finalement réussi (Non sans m'être sérieusement cassé les dents sur le problème quand même). Voici à quoi ressemble la fonction en ajax maintenant :

function callScript ( scriptName, args ){

var xhr_object = null;

if(window.XMLHttpRequest) // Firefox
xhr_object = new XMLHttpRequest();
else if(window.ActiveXObject) // Internet Explorer
xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
else { // XMLHttpRequest non supporté par le navigateur
alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
return;
}

xhr_object.open("POST", scriptName, true);

xhr_object.onreadystatechange = function() {
if(xhr_object.readyState == 4) {
//alert(xhr_object.responseText); // DEBUG MODE
//document.write(xhr_object.responseText);
var div = document.getElementById('contenu');
div.innerHTML = xhr_object.responseText;
}

//alert(xhr_object.readyState);
return xhr_object.readyState;
}

xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded");

xhr_object.send(args);

}

//

Mon collègue et moi-même te remercions grandement en tout cas, tu nous auras franchement beaucoup aidé ^^
0
kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
14 déc. 2007 à 11:20
Ok donc vous avez certainement du modifier un peu le fichier de traitement PHP j'imagine (remettre les "echo" et virer les quelques lignes de commande javascript) ?
Si ca fonctionne tant mieux ma fois.

Bon courage pour la suite.
0