rss
Rechercher : dans
Par : Pertinence Date Nom d'utilisateur
Statut : Non résolu

Ajax pour éviter rechargement de pages - HELP

Posté par kaelhula, le lundi 7 avril 2008 à 10:06:51
Bonjour,

Voilà je suis en train d'essayer d'intégrer dans les pages d'un site la technologie Ajax (que je ne connais personnellement pas :s ). Un ami m'a donné un script et m'a expliqué comment je devais faire pour qu'il fonctionne, car je suis limitée en temps et je n'ai pas le temps de voir les tutos (pas prévu à la base de faire ça :s)

donc je me tourne vers vous !

j'ai un fichier ajax.js (le fameux qu'on m 'a donné) qui contient ceci :

function link(url)

{
openurl(url, 'main');
}

function openurl(url, into)
{
var xhr;
try { xhr = new ActiveXObject('Msxml2.XMLHTTP'); }
catch (e)
{
try { xhr = new ActiveXObject('Microsoft.XMLHTTP'); }
catch (e2)
{
try { xhr = new XMLHttpRequest(); }
catch (e3) { xhr = false; }
}
}

xhr.onreadystatechange = function()
{
if(xhr.readyState == 4)
{
if(xhr.status == 200)
document.getElementById(into).innerHTML=xhr.responseText;
else
document.write(xhr.status);
}
};

xhr.open("GET", url, true);
xhr.send(null); }


et une page index.php qui contient mes éléments fixes (à ne pas recharger) et un include de ma page accueil.php, la page par défaut. le problème c'est que cette page reste affichée, y compris quand je clique sur le lien qui doit m'amener sur la page presentation.php par exemple... Pourquoi ? :'(

Merci de m'aider si vous le pouvez, ça me bloque vraiment...

je suis à votre disposition pour tout renseignement supplémentaire (désolée, l'ajax j'y connais rien !!)


haha hahahaha
Répondre à kaelhula  Signaler ce message aux modérateurs Aller au dernier message

1


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
kaelhula, le lundi 7 avril 2008 à 12:49:53
up !
haha hahahaha
Répondre à kaelhula

2


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Devilish, le lundi 7 avril 2008 à 13:59:38
Bonjour,
Je n'y connait pas grand chose aussi, mais les ID correspondent-ils dans ton code html?
Répondre à Devilish

3


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
kaelhula, le lundi 7 avril 2008 à 14:05:18
oui oui, le div dans lequel devrait se mettre le contenu de mes pages a bien son id="main"

(merci de t'être arrêté sur ma question :D ) haha hahahaha
Répondre à kaelhula

4


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
kaelhula, le lundi 7 avril 2008 à 15:22:16
petite précision : on dirait que le php contenu dans mes pages fait un peu tout buguer. Pourtant c'est un code qui fonctionnait parfaitement bien avant que je n'essaie de mettre ce système avec Ajax pour éviter le rechargement complet des pages..


need some help :'(
haha hahahaha
Répondre à kaelhula

5


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
kaelhula, le lundi 7 avril 2008 à 16:18:44
toujours pas ? (désolée je fais du forcing, mais je peux pas du tout avancer tant que j'ai pas résolu ce problème et je sèche vraiment !) haha hahahaha
Répondre à kaelhula

6


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Kitty-cat, le lundi 7 avril 2008 à 17:07:52
Tu passes bien tout les paramètres à ta fonction ajax?
Répondre à Kitty-cat

7


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
kaelhula, le lundi 7 avril 2008 à 17:11:25
euh, quels paramètres ? (désolée... la personne qui m'a filé ce script ne m'a pas parlé de paramètres je crois :s)

j'ai lié ma page index.php à mon ajax.js, et mes liens sont de cette forme : "javascript:link('presentation.php')"

mais il faut d'autres paramètres ? (newbie un jour...) haha hahahaha
Répondre à kaelhula

8


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
kaelhula, le mardi 8 avril 2008 à 11:31:42
up :s haha hahahaha
Répondre à kaelhula

9


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Devilish, le mardi 8 avril 2008 à 12:27:25
Bonjour,
Les paramètres sont ceux que utilisent ta fonction javascript.
Répondre à Devilish

10


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
kaelhula, le mardi 8 avril 2008 à 14:21:36
Ah oui pardon :s

de ce coté là oui, je passe bien l'url de ma page à charger : mon lien présentation comme j'en donnais l'exemple :
<a href="javascript:link('presentation.php')" title="">Présentation</a>

donc ça devrait aller non ?


haha hahahaha
Répondre à kaelhula

11


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Devilish, le mercredi 9 avril 2008 à 09:31:58
Ben dans ce cas place des alert() un peu partout dans le javascript pour voir a quel moment plante ton code. Ça fait un peu brouillon mais c''est efficace pour situer l'erreur.
Répondre à Devilish

12


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
kaelhula, le mercredi 9 avril 2008 à 14:46:32
alors j'ai fait ce que tu m'as conseillé et en fait, mon lien est bon, ça me renvoie bien la bonne adresse. Dans mon ajax.js, la variable url prends bien la valeur presentation.php et toutes les autres valeurs de mes liens.

Serait-ce le php qui pose problème ? j'ai l'impression que ça le bloque, est-ce que le php peut interférer ? sachant que mon code php est bon vu qu'il tournait très bien avant que j'essaie de mettre ce truc en ajax !!

haha hahahaha
Répondre à kaelhula

13


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Kitty-cat, le mercredi 9 avril 2008 à 15:46:34
Si ton script est pas trop long, poste le ici évntuellement, ca sera plus simple pour te dire :)

(ET j'ai l'impression de me parler à moi-même quand je te réponds, ton pseudo étant le mien sur pas mal de jeux online xD)
Répondre à Kitty-cat

14


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
kaelhula, le mercredi 9 avril 2008 à 16:54:33
héhé :p

le ajax.js est posté dans mon premier message.

après le div qui doit contenir les pages ajaxisées dans mon index.php est tout bête :
<div id="main">
<?php include("accueil.php"); ?> //ma page par défaut
</div>


et les liens dans mon menu (qui est inclu dans mon index.php par un include) sont omme ça :

<div id="menu">
<dl>
<dt><a href="javascript:link('presentation.php')" title="">Présentation</a></dt>
</dl>

<dl>


(après j'y connais rien alors ptet qu'il y a une énorme erreur que je sais pas voir du coup >.< )

si vous pouvez m'éclairer... haha hahahaha
Répondre à kaelhula

15


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Kitty-cat, le jeudi 10 avril 2008 à 10:06:42
Le point virgule manquant après la fonction javascript? Mais ca m'étonnerait que ca soit juste ça
Répondre à Kitty-cat

16


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
kaelhula, le jeudi 10 avril 2008 à 10:08:43
non, j'ai essayé tout à l'heure (on a les idées en même temps semble-t-il :p ) mais ça ne marche quand même pas :s haha hahahaha
Répondre à kaelhula

17


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Kitty-cat, le jeudi 10 avril 2008 à 10:11:32
Remplace ton href par un bouton ou tu déclencheras l'évènement sur un onclick ;)
Répondre à Kitty-cat

18


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
kaelhula, le jeudi 10 avril 2008 à 10:40:13
alors j'ai essayé et en fait je me suis rendu compte que :
- quand je n'utilise pas de bouton, la page ne s'ouvre même pas, je reste sur l'autre et les alert que j'ai placé dans mon javascript ne s'ouvrent pas : la fonction n'est visiblement pas appelée >.<
- quand j'utilise un bouton, j'ai mes alert, la page s'ouvre mais vide (d'ou le problème éventuel du php qui ne marcherait pas pour X raison ? )


mais je voudrai utiliser mon href et pas un bouton...




que faire ? haha hahahaha
Répondre à kaelhula

19


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Kitty-cat, le jeudi 10 avril 2008 à 10:42:19
vérifier que tu peux foutre un on click sur un href, ce qui m'étonnerait. Pour ça qe je te proposais un bouton. Et je veux bien voir le php. (En fait c'est à ça que j'pensais en parlant de script au départ ^^')
Répondre à Kitty-cat

20


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
kaelhula, le jeudi 10 avril 2008 à 10:47:58
arf ok !! dsl..

alors j'ai essayé le <a onclick ...blabla> mais ça ne marche pas, pas plus de réaction que le a href... (et pas plus avec le href et le onclick >.< )


sinon pour le php ça donne ça :

<?php

if (isset($_GET['largeur']) AND isset($_GET['hauteur'])) {

} else {
// passage des variables de dimensions
// (préservation de la requête d'origine
// -- les variables par méthode POST doivent être traitées différemment)

echo "<script type=\"text/javascript\">\n";
echo " location.href=\"${_SERVER['SCRIPT_NAME']}?${_SERVER['QU­ERY_STRING']}"
. "&largeur=\" + (screen.availWidth - 450) + \"&hauteur=\" + (screen.availHeight - 450);\n";
echo "</script>\n";
exit();
}


$largeurImg = $_GET['largeur'];
$hauteurImg = $_GET['hauteur'];
$largeurff = $largeurImg+50;


echo '<div class="news" style="height:'.$hauteurImg.'px; width:'.$largeurff.'px; overflow-y:auto; border:1px solid red;">';
echo '<table style="height:'.$hauteurImg.'px; width:'.$largeurImg.'px; border:1px solid; text-align:center; vertical-align:middle; position:relative;" align="center"><tr><td align="center" style="text-align:center;">';

$ficnews = 'texte_presentation.php';
if (file_exists($ficnews))
{ include("texte_presentation.php");
}
else
echo'<img src="images/accueil.jpg"/>';
?>



(voui mon premier if ne sert pas à grand chose, faudrait que je le vire :s )


mais sinon il marchait bien avant cette histoire ajaxienne comme je disais plus haut ^^
haha hahahaha
Répondre à kaelhula

21


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Kitty-cat, le jeudi 10 avril 2008 à 10:54:57
if (isset($_GET['largeur']) AND isset($_GET['hauteur'])) ==> if ((isset($_GET['Largeur'])) AND (isset($_GET['largeur'])))

echo " location.href=\"${_SERVER['SCRIPT_NAME']}?${_SERVER['QU­ERY_STRING']}" ==> echo " location.href=".${_SERVER['SCRIPT_NAME']}? : ${_SERVER['QUERY_STRING']}."

Ca m'a fait tiquer de le voir comme ça, d'où l'ortho que j'utiliserais ^^

Mais si ca marche tout seul...:/

Elle dit quoi la console d'erreur?
Répondre à Kitty-cat

22


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
kaelhula, le jeudi 10 avril 2008 à 11:03:23
(pour le code php, je t'avoue que c'est un script que j'ai récupéré sur le net, mais il fonctionne sans problème donc...)

pour la console d'erreur (c'est la première fois que j'allais dedans Oo' ) elle me dit qu'il y a une erreur de syntaxe à l'appel de ma fonction visiblement, et elle me met une flèche verte sous ma parenthèse à javascript:link(

comprends pas :p haha hahahaha
Répondre à kaelhula

23


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Kitty-cat, le jeudi 10 avril 2008 à 11:13:18
Ca aide à cibler le problème.

La console d'erreur dit quoi quand tu met un bouton?
Répondre à Kitty-cat

24


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
kaelhula, le jeudi 10 avril 2008 à 11:18:07
elle me dit rien donc le bouton doit pas lui poser de problème (pourtant le lien sur le onclick est le même que celui du href... et que du onclick sur le <a>...)

mais comment je peux faire mon lien sur une image sans passer par le bouton moi ?? :'(

haha hahahaha
Répondre à kaelhula

25


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
kaelhula, le jeudi 10 avril 2008 à 11:24:21
Bon alors j'ao trouvé pourquoi j'avais pas mon appel de la fonction, j'avais des guilemets en trop. par contre, maintenant que mes images lancent bien ma fonction, j'ai toujours rien dans ma page qui s'affiche :s


ma page d'accueil reste toujours affichée et je ne passe pas sur l'autre page... haha hahahaha
Répondre à kaelhula

26


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Kitty-cat, le jeudi 10 avril 2008 à 11:27:02
Si c'est sur une image, utiliser un bouton est pas gênant. Suffit que tu lui définisse en css que ce qu'il affiche, c'est justement l'image et pas un fond tout gris tout moche.

Et passe le nom du div où tu veux afficher ton script php en second paramètre de ta fonction ajax. ;)
Répondre à Kitty-cat

27


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
kaelhula, le jeudi 10 avril 2008 à 11:34:00
j'ai résolu le problème image bouton plus haut, ça donne le même résultat. Par contre, mes pages s'ouvrent toutes dans mon div id="main", et ma fonction js est faite de telle façon que je n'ai pas besoin de le préciser :

function link(url)

{
openurl(url, 'main');
}

function openurl(url, into)
{
var xhr;



j'appelle ma fonction link ,et elle appelle openurl en lui précisant que c'est dans main donc...

par contre un truc bizarre, tiens je te file l'url du test de mon site (c''est moche c'est normal, hein !)
http://www.agence-pict.com/test/index.php

et en fait, regarde : quand tu cliques sur présentation, pas de changement, par contre quand tu cliques sur un lien de la rubrique image 3D (dans PAO j'ai pas encore fait les liens), le bandeau d'images change bien mais je garde en dessous ma page d'accueil avec les news.

Donc on dirait que mon lien m'ouvre bien mon bandeau d'images (c'est normal qu'il ne change pas dans présentation, c'est le même) mais ne m'ouvre pas la suite de ma page et me laisse à la place la page d'accueil (je sais pas si je suis très claire)


why ??


haha hahahaha
Répondre à kaelhula

28


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Kitty-cat, le jeudi 10 avril 2008 à 11:41:22
Fais un test en enlevant le include dans ton main. On sait jamais, c'est peut-être ça qui fait foirer.
Répondre à Kitty-cat

29


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
kaelhula, le jeudi 10 avril 2008 à 11:53:19
quand j'enlève le include par défaut, j'ai encore juste le bandeau qui apparait quand je clique sur un lien, toujours pas le contenu : je retombe sur mon problèm