Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2487 connectés 

  FORUM HardWare.fr
  Programmation
  HTML/CSS

  Un site en ajax et les fonctions javascript ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Un site en ajax et les fonctions javascript ?

n°1758860
dougui_bzh
Posté le 12-07-2008 à 21:24:20  profilanswer
 

Salut
 
J'essai de developper un site tout en Ajax, qui est censé ne jamais se recharger, je passe donc par plusieurs fonction que voici :
 
Les fonctions javascript
Code :
 
 function file(fichier, mode){
 if(mode == "undefined" ){
  mode = "XML";
 }
 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) {
  if(mode == "XML" ){
   return(xhr_object.responseXML);
  } else {
   return(xhr_object.responseText);
  }
 } else {
 return(false);
 }
 }
 
 function moteur(URL){
 document.getElementById("corpsDuSite" ).innerHTML = file(URL,"text" );
 }
 
L'appelle d'une fonction :
Code :
 
 
 <a href='#' onClick="moteur('moteur.php?page=accueil');">Retour à l'accueil</a>
 
La page moteur.php :
Code :
 
<?php
include('scripts/include.php');
 
if(isset($_GET['page']))
{
 switch($_GET['page'])
 {
  case'admin/accueil':include('admin/accueil.php');break;
  case'admin/formLive':include('admin/formLive.php');break;
  case'reunion':include('reunion.php');break;
  case'live':include('live.php');break;
  default:include('accueil.php');
 }
}
else  
{
 include('accueil.php');
}
 
?>
 
 
Et enfin je charge un page, voici un exemple :
 
Code :
 
 
<script>
function test(){
 alert('ça marche!');
}
</script>
<table border='1'>
 <tbody id="reunion">
  <tr>
   <th width='300'>Lieu</th><th>Date</th><th>Heure</th>
  </tr>
  <?php
   $i=0;
   $reunion1 = requete("select numReunion, lieu, DATE_FORMAT(date,'%d/%m/%Y') as date, DATE_FORMAT(date,'%H:%i') as heure from _jourj_Reunions order by numReunion asc" );
   while($reunion = mysql_fetch_object($reunion1)){
    echo "<tr id='".$reunion->numReunion."'>\n";
     $nbMessage1 = requete("select * from _jourj_MessagesLive where numReunion=".$reunion->numReunion);
     $nbMessage = mysql_num_rows($nbMessage1);
     if($nbMessage != 0){
      echo "<td><a href='#' onClick='moteur(\"moteur.php?page=live&numReunion=".$reunion->numReunion."\" )'>".$reunion->lieu."</a></td>\n";
     } else {
      echo "<td>".$reunion->lieu."</td>\n";
     }
     echo "<td><a href='#' onClick='test()'>".$reunion->date."</a></td>\n";
     echo "<td >".$reunion->heure."</td>\n";
    echo "</tr>\n";
    $i++;
   }
  ?>
 </tbody>
</table>
 
 
Sur la dernière page, quand on clique sur la date. La fonction "test()" devrai réagir, sauf qu'elle à été inclue en javascript dans ma div corpsDuSite et donc il doit lui manquer une sorte de compilation, le navigateur me revoit "test is not defined". J'ai j'ai la solution de charger toute les fonctions javascript dés le 1er chargement mais ne me plais qu'a moitié. Déjà ça peut faire crade comme codage et en + ça va mettre du temps à tout charger lors du 1er chargement.
 
Y a t'il un moyen "compiler" les fonctions incluse avec cette ligne : document.getElementById("corpsDuSite" ).innerHTML = file(URL,"text" ); ?
 
Vous pensez quoi de faire un site en ajax? Est ce que c'est vraiment utile ou c'est juste une forme de sadomasochisme?  
Merci d'avance !

mood
Publicité
Posté le 12-07-2008 à 21:24:20  profilanswer
 

n°1758895
SICKofitAL​L
misanthrope
Posté le 12-07-2008 à 22:58:23  profilanswer
 

Perso je pense que faire un site en Ajax ca n'existe pas, "Ajax" est une technique et pas un langage, ici le langage c'est le javascript.
 
Ensuite je pense que tu mélanges trop de truc à la fois : lorsuqe tu appelles une de tes pages, tu devrais plutot appeler une fonction PHP qui te renverrait le code HTML propre (càd dans du PHP dedans justement).
Je vais copier/coller ton code et voir pour ton soucis de fonction :)


---------------
We deserve everything that's coming...
n°1758898
dougui_bzh
Posté le 12-07-2008 à 23:07:03  profilanswer
 

En effet c'est un abus de langage, je veux dire un site utilisant l'ajax pour éviter le chargement...  
 
J'ai une page qui fait transition en PHP entre la page qui appelle la fonction et celle qui est appelée.

n°1758919
SICKofitAL​L
misanthrope
Posté le 13-07-2008 à 00:06:57  profilanswer
 

Jai testé ton bout de code, et en effet ce qui il ya entre les tags script n'est pas du tout évalué.
 
En fait il suffit de créer ta fonction "test", ainsi que ttes autres fonctions susceptibles de réagir à un évenement, dans ton fichier principal. En plus pour le debug c'est bien plus pratique. Ceci dit on doit pouvoir arriver à un résultat similaire avec la fonction eval (), histoire de charger à la volée du code JS uniquement (càd qu'on sépare le code JS du HTML)


---------------
We deserve everything that's coming...
n°1758930
dougui_bzh
Posté le 13-07-2008 à 00:42:45  profilanswer
 

j'y ai bien pensé et je pense qu'au final je vais séparer le JS du HTML. Merci du coup de mains.

n°1758943
mIRROR
Chevreuillobolchévik
Posté le 13-07-2008 à 01:21:47  profilanswer
 

SICKofitALL a écrit :

la fonction eval ()


 
[:dawak]
en général tes propos sont sensés mais là c est violemment nul
je n ai encore jamais vu une utilisation justifiée d eval, et surtout dans un langage client-side: c est une porte ouverte à toutes les failles imaginables
j avoue que je n'ai pas testé le code, mais c est sûr qu'eval n est PAS la solution


---------------
« The enemy is the gramophone mind, whether or not one agrees with the record that is being played at the moment. » — George Orwell
n°1758948
SICKofitAL​L
misanthrope
Posté le 13-07-2008 à 02:20:24  profilanswer
 

non ce n'est pas la solution on est bien d'accord, eval n'est utile que pour le json... et encore !
 
mais dans le cas du code plus haut, on pourrait supposer utiliser eval apres extraction du code JS (un regExp sur le tag script ?) dans le responseText renvoyé par XHR, ca ferait une sorte de "include" à la sauce JS, et cela dans un cadre strictement maitrisé.
 
Mais sinon, c'est vrai, eval est à bannir d'un code qui se respecte :jap:


---------------
We deserve everything that's coming...
n°1758950
mIRROR
Chevreuillobolchévik
Posté le 13-07-2008 à 02:36:13  profilanswer
 

eval n a clairement rien a foutre dans le json
c est un format directement accessible
et les regex ont encore moins leur place dans le parsing!


---------------
« The enemy is the gramophone mind, whether or not one agrees with the record that is being played at the moment. » — George Orwell
n°1758956
SICKofitAL​L
misanthrope
Posté le 13-07-2008 à 03:01:33  profilanswer
 

sauf erreur, eval est un moyen efficace (mais pas le seul) pour convertir le responseText du XHR en qqch de compréhensible par JS, avec un eval donc, car sinon ce n'est PAS accessible directement...

Code :
  1. var json = eval ('(' + xhr.responseText + ')');


 
Et pour le parsing... quoi de mieux que les expressions régulières pour le parsing ? Ou alors on parle pas de la même chose ;)


Message édité par SICKofitALL le 13-07-2008 à 03:04:17

---------------
We deserve everything that's coming...
n°1758957
mIRROR
Chevreuillobolchévik
Posté le 13-07-2008 à 03:10:21  profilanswer
 

erreur!
c est exactement le but du JSON: etre accessible sans transformation
 
pour le parsing ce n est clairement pas le but du js, meme si ca reste bien sur possble (c est evidemment le moyen le plus rapide pour un RTE,  mais c est probablement la seule entorse :/)
 
dans tous les cas je t invite sur bla²@web des tas de gens moins competents que toi y interviennent :P


---------------
« The enemy is the gramophone mind, whether or not one agrees with the record that is being played at the moment. » — George Orwell
mood
Publicité
Posté le 13-07-2008 à 03:10:21  profilanswer
 

n°1758960
SICKofitAL​L
misanthrope
Posté le 13-07-2008 à 03:20:05  profilanswer
 

héhé j'y vais de ce pas :D


---------------
We deserve everything that's coming...
n°1758991
dougui_bzh
Posté le 13-07-2008 à 10:48:44  profilanswer
 

Bon je met quoi alors?

n°1758996
dougui_bzh
Posté le 13-07-2008 à 11:05:48  profilanswer
 

J'ai lu que faire un site en ajax pouvait poser des problèmes, notamment ceux ci :  
Tu perds la possibilité de garder les pages en favoris.
Les refresh via le navigateur ne fonctionneront pas.
 
Existe t'il une liste plus exhaustive des soucis? Sinon j'ai trouvé cette page : http://www.developpez.net/forums/s [...] p?t=584846 qui me semble intéressante. Bref j'hésite à faire le site en ajax même si ça fait bien.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  HTML/CSS

  Un site en ajax et les fonctions javascript ?

 

Sujets relatifs
.htaccess | Refuser accès aux personnes, autoriser accès au site mêmeActiver 2 fonctions en safe_mod dans PHP
Encodage avec javaScriptPetite aide pour finir mon site
[PHP] Acceder a un fichier depuis n'importe qu'elle page d'un site ?[resolu] Ajax et XML. Mon script ne fonctionne pas.
lien src en javascriptUrl et ajax
Question pour le développement d'un siteéditeur de site kompozer
Plus de sujets relatifs à : Un site en ajax et les fonctions javascript ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR