Affichage d'un div en ajax

leod Messages postés 98 Statut Membre -  
 dblogtoi -
Bonjour a tous

alors voici mon probleme , je refond mon site depuis peu pour le rendre plus dynamique et fluide et je suis donc passé à l'ajax

le problème c'est que je ne connais pas le javascript
j'ai donc cherché pour chaque probleme une solution déjà faite

notamment le chargement d'une page php dans un <div>

je suis tombé sur cette fonction :

<script type="text/javascript">
function envoieRequete(url,id)
{
var xhr_object = null;
var position = id;
if(window.XMLHttpRequest) xhr_object = new XMLHttpRequest();
else
if (window.ActiveXObject) xhr_object = new ActiveXObject("Microsoft.XMLHTTP");

// On ouvre la requete vers la page désirée
xhr_object.open("GET", url, true);
xhr_object.onreadystatechange = function(){
if ( xhr_object.readyState == 4 )
{
// j'affiche dans la DIV spécifiées le contenu retourné par le fichier
document.getElementById(position).innerHTML = xhr_object.responseText;
}
}
// dans le cas du get
xhr_object.send(null);

}
</script>

cette fonction s'appel de la facon suivante :

<a class="noncolore" href="#" onclick="envoieRequete('listedesmembres.php','page');"><font color="white"><b>liste des membres</b></font></a>

et affiche la page listedesmembres entre les balises :

<div id="page"></div>

ceci marche très bien mais il y a beaucoup de "mais"

- 1 - en effet je ne peu plus faire retour avec le bouton précédent

- 2 - je ne vois pas trop comment afficher une page par défaut dans ce div

mais malgré tout je cherche à l'utiliser , donc mes questions sont les suivantes

comment je peu faire en php pour appeler cette fonction
exemple : connection ok ! -> envoieRequete(connectionok.php,page) ??? ca ne marche pas

message d'erreur : Fatal error: Call to undefined function envoieRequete()

auriez vous une autre méthode ajax ou le fonctionnement est bien détaillé et qui a fait ces preuves ?
je voudrai arriver à changer l'affichage suivant la connection ou la deconnection ou suivant le clic sur un lien de ma page index (enfin du div) comme par exemple sur commentcamarche changer l'affichage uniquement du cadre blanc

voila j'espere que vous avez compris mes questions

merci d'avance

5 réponses

macgawel Messages postés 676 Statut Membre 89
 
bonjour.

Je ne suis pas un spécialiste Ajax, mais on va essayer :
- 1 - en effet je ne peu plus faire retour avec le bouton précédent

C'est un des problèmes d'Ajax (avec l'obligation d'avoir JA pour accéder au site).

<code
- 2 - je ne vois pas trop comment afficher une page par défaut dans ce div </code>
Si tu mets quelque chose dans ton DIV, c'est ce que tu auras par défaut :
Chargement de ta page => <div>Accueil</div>
Clic sur un lien (disons connexion.php) => <div>connexion OK</div>
Tu remplaces le contenu de base par le résultat de la page appelée.

Ce qui veut dire que ton connectionok.php ne doit renvoyer que ce qui sera le contenu du DIV.
0
leod Messages postés 98 Statut Membre 2
 
ok merci

bon deja effectivement en mettant un include dans la balise div cette page s'affiche par defaut -> resolu

ensuite je ne peu pas faire appel a la page connection.php sur le clic connection , ceci m'obligerai a passer login et mdp en clair en argument dans la barre d'adresse , chose que je ne veu question de securité

à moins que je puisse faire executer autrement mon script php de connection
-1
PhP Messages postés 1774 Statut Membre 606
 
Bsr

Pour le bouton [Précédent] effectivement ça marche pas avec AJAX

Pour le user+mot de passe en clair utilise la méthode POST plutôt que GET

Pour plus de sécuriter tu peux aussi utiliser une clé aléatoire générée par PHP que tu envois au navigateur. Celui-ci retourne alors le mot de passe et le user cryptés avec cette même clé que PHP n'a plus qu'à décoder.
Un simple XOR avec la clé de chaque côté est suffisant pour du WEB et c'est très facile à coder sauf si tu ne connais ni PHP ni Javascript là forcément ...

Enfin si tu es paranoïaque tu peux utiliser un protocole sécurisé avec HTTPS mais là j'avoue que j'ignore comment on le met en oeuvre
-1
leod Messages postés 98 Statut Membre 2
 
merci effectivement je voulai faire ca en dernier recours
je connai bien php mais pas du tout javascript

sinon quelqu'un connai de bon tuto sur l'ajax pas a pas qui fait plus de 3 lignes ^^ avec des exemples surtout !
car je ne trouve pas grand chose et doit donc utiliser des script moyen ^^

sinon une derniere question :

comment puis je me souvenir de la derniere page visité et l'envoyer au navigateur pour corriger le pb du bouton precedent !

je pourrai permettre le retour de une page puis envoyer vers un message d'erreur au bout de 2 retour ? non ?
-1

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

Posez votre question
dblogtoi
 
Bonjour,

Voila...

J'ai divisé ma page en plusieurs div (banniere, menu, contenu,bas). J'ai un menu du style :

<dt onclick="javascript:montre('monmenu2');">TITRE 1</dt>
<dd id="monmenu2">
<ul>
<li><a href="#" onclick="envoieRequete('pagetest.html','contenu');">Page1</a></li>
<li><a href="#">Page 2</a></li>
<li><a href="#">Page 3</a></li>
</ul>
</dd>

<dt onclick="javascript:montre('monmenu3');">TITRE 2</dt>
<dd id="monmenu3">
<ul>
<li><a href="#">2.1</a></li>
<li><a href="#">2.2</a></li>
<li><a href="#">2.3</a></li>
</ul>
</dd>
ect....
J'ai utilisé la fonction envoierequete qui marche avec plusieurs personnes sur le net. J'ai vu que tu l'as utilisé.
Cependant moi quand je la met et que j'essaie la page1 du titre 1, ca me met erreur sur la page pourquoi???
Ma page test est ds le meme dossier et ma fonction envoirequete je l'ai copié dans le head.
Euh j'ai une autre fonction qui est peut etre source du pb... mais elle marche bien sans envoirequete :

window.onload=montre;
function montre(id)
{
var d = document.getElementById(id);
for (var i = 1; i<=10; i++) {
if (document.getElementById('monmenu'+i))
{document.getElementById('monmenu'+i).style.display='none';}
}
if (d) {d.style.display='block';}
}
Y aurait til doublon? comment faire svp merci...
-1