Liens Ajax
Dernière réponse : dans Programmation
Bonjour à tous.
J'ai créée un menu avec des liens au milieu gauche de ma page web.
J'ai utilisé la technique ajax pour que lorsque je clique sur un lien, la page
s'affiche sans qui yai un rechargement de la page, c-a-d tout en restant sur la même page.
Jusqu'ici tout va bien, mais le problème c'est que lorsque je fait un clique sur un de mes liens, la position de ma page remonte en haut , alors que moi je veux que ca reste toujours au milieu gauche, c-a-d l'endroit où mes menu sont placés
Merci
J'ai créée un menu avec des liens au milieu gauche de ma page web.
J'ai utilisé la technique ajax pour que lorsque je clique sur un lien, la page
s'affiche sans qui yai un rechargement de la page, c-a-d tout en restant sur la même page.
Jusqu'ici tout va bien, mais le problème c'est que lorsque je fait un clique sur un de mes liens, la position de ma page remonte en haut , alors que moi je veux que ca reste toujours au milieu gauche, c-a-d l'endroit où mes menu sont placés
Merci
Autres pages sur : liens ajax
Lassé par la pub ? Créez un compte
une ancre en HTML : http://nephi.unice.fr/CoursHTML/coursp9.php
Edit: regarde la partie "Les liens vers une partie d'un document local"
Edit: regarde la partie "Les liens vers une partie d'un document local"
OmaR a dit :
une ancre en HTML : http://nephi.unice.fr/CoursHTML/coursp9.phpEdit: regarde la partie "Les liens vers une partie d'un document local"
Salut,
J'ai créée l'autre topic car je pensais être plus clair et plus précis que celui-ci....merci comme même pour la réponse
Merci Omar, ton lien m'a été utile.
Mais j'ai une autre petite question pour toi.
Comment je pourrais charger plus qu'une page avec la
balise <body onload=" "></body> ?
Pour l'instant je l'utilise avec une seule page qui se charge dés l'ouverture de ma page.
Ex: <body onload="page(1)"></body>
Merci
OmaR a dit :
qu'appelles tu "charger" une page ?Tu veux ouvrir une nouvelle page ?
Avec la fonction "page(num)", j'appelle un numéro page.
Et j'aimerai que dés que j'ouvre ma page d'accueil, les autres pages puissent se charger en même temps : page(1),page(2),etc...
OmaR a dit :
Sinon, tu peux rajouter des instructions dans la balise, tu peux faire :
<body onload="page(1);page(2);page(3);"></body>
Je vais essayer ca, merci
OmaR a dit :
ça doit être parce que tu appelles une page en lui donnant un nom, et que tu la rappelles trois fois, donc c'est le dernier appel qui fonctionne.Non je l'appel pas trois fois.
Bon je t'explique comment ca se passe:
J'ai 2 pages html.
Sur la permiere page j'ai un body.
Dans le body j'ai:
<body onLoad="Page(1)"> code..............etc...</body>
Dés que je charge ma page d'accueil, il y'a une autre page qui se charge avec l'appel de la fonction Page(1), que je met dans un div afin que cette page soit placée à l'endroit où je veux.
Jusqu'ici ca fonctionne.
J'ai une deuxième page qui utilise le body de la première (Avec la fonction include), mais j'aimerais que sur cette deuxième page
je charge 2 autres pages que je vais positionner avec un div aussi.
Donc suite à ce que tu m'a dit, j'ai fait :
<body onload="page(1);page(2);page(3);"></body>
Sur ma page d'accueil j'ai bien une page qui s'affiche à l'aide
de la fonction Page(1). Sur la deuxième page seulement la fonction Page(3) qui est pris en compte et non Page(2)
OmaR a dit :
Par curiosité, je pourrais voir le code de ta fonction page() ??function page(num)
{
getXhr();
xhr.onreadystatechange = function()
{
if(xhr.readyState == 4 && xhr.status == 200)
{
document.getElementById('num').innerHTML=xhr.responseText;
}
}
xhr.open("GET","get_page.php?num="+num,true);
xhr.send(null);
}
C'est simple, en fait, quand tu fais un document.getElementById('num'), tu récupères l'élément avec comme id="num", pas id="1", ou id="2", en fonction du numéro de page.
Il faudrait que tu fasses document.getElementById(num) pour avoir l'élément avec comme id="1", ou id="2", etc...
Car là, pour tes trois fonctions, tu les mets toutes dans le même élément, sauf que tu remplaces le contenu à chaque fois.
Il faudrait que tu fasses document.getElementById(num) pour avoir l'élément avec comme id="1", ou id="2", etc...
Car là, pour tes trois fonctions, tu les mets toutes dans le même élément, sauf que tu remplaces le contenu à chaque fois.
OmaR a dit :
As tu des éléments avec comme id égal à 1 ou égal à 2 dans ta page HTML ?Le mieux c'est de te montrer tout mon code:
En gros ce que je veux faire c'est 2 menus dans une seule page.
Chaque menu contient 2 hyperliens.
Ca fonctionne bien avec firefox mais non avec internet Explorer.
(Comme presque toujours
):
<head>
<script type='text/JavaScript'>
var xhr = null;
function getXhr()
{
if(window.XMLHttpRequest)xhr = new XMLHttpRequest();
else if(window.ActiveXObject)
{
try{
xhr = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
}
else
{
alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
xhr = false;
}
}
function menu1(num1)
{
getXhr();
xhr.onreadystatechange = function()
{
if(xhr.readyState == 4 && xhr.status == 200)
{
document.getElementById('num1').innerHTML=xhr.responseText;
}
}
xhr.open("GET","page1.php?num1="+num1,true);
xhr.send(null);
}
var xhr2 = null;
function getXhr2()
{
if(window.XMLHttpRequest)xhr2 = new XMLHttpRequest();
else if(window.ActiveXObject)
{
try{
xhr2 = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
xhr2 = new ActiveXObject("Microsoft.XMLHTTP");
}
}
else
{
alert("Votre navigateur ne supporte pas le XMLHTTPRequest...");
xhr2 = false;
}
}
function menu2(num2)
{
getXhr2();
xhr2.onreadystatechange = function()
{
if(xhr2.readyState == 4 && xhr2.status == 200)
{
document.getElementById('num2').innerHTML=xhr2.responseText;
}
}
xhr2.open("GET","page2.php?num2="+num2,true);
xhr2.send(null);
}
</script>
<style type='text/css'>
#menu1 {
background-color:red;
margin-left:200px;
}
#menu2 {
background-color:blue;
margin-left:400px;
}
</style>
</head>
<script type="text/javaScript">
menu1(1)</script>
<div id="menu1"></div>
<script type="text/javaScript">
menu2(1)</script>
<div id="menu2"></div>
Voici le contenu des pages que j'appele:
Page1.php:
$num1=$_GET['num1'];
if($num1==1){
echo '<a href="#" onClick="menu1(1)>Lien 1</a>';
echo ' <a href="#" onClick="menu1(2)>Lien 2</a>';
echo ' Contenu 1 de la page 1'
}
if($num1==2){
echo '<a href="#" onClick="menu1(1)>Lien 1</a>';
echo ' <a href="#" onClick="menu1(2)>Lien 2</a>';
echo ' Contenu 2 de la page 1'
}
Page2.php:
$num2=$_GET['num2'];
if($num2==1){
echo '<a href="#" onClick="menu2(1)>Lien 1</a>';
echo ' <a href="#" onClick="menu2(2)>Lien 2</a>';
echo ' Contenu 1 de la page 2'
}
if($num2==2){
echo '<a href="#" onClick="menu2(1)>Lien 1</a>';
echo '<a href="#" onClick="menu2(2)>Lien 2</a>';
echo ' Contenu 2 de la page 2'
}
J'ai enlevé les ' ', dans
document.getElementById(num1).innerHTML=xhr.responseText;
, mais ca ne m'affiche rien.
OmaR a dit :
Et si tu remplaces document.getElementById('num1').innerHTML=xhr.responseText; par document.getElementById('menu1').innerHTML=xhr.responseText; Et la même chose pour le 2
Le problème persiste toujours sous IE.
Ce qui est bizzare, c'est que ca fonctionne la première fois que je charge ma page d'accueil qui contient les menus, mais dés que je fait un refresh, les menus disparaissent !!!
Lassé par la pub ? Créez un compte