Lien href OU ajax

1992clement -  
Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Voilà, je monte un site web, et pour améliorer le temps de chargement des pages du site, je souhaite mettre tous mes liens en Ajax.
Seulement, d'après ce que j'ai pu lire, si je met uniquement des liens Ajax, ça va complètement casser le référencement du site.
J'ai trouvé un début de solution sur ce site :

http://devlint.fr/blog/jquery-inclure-page-en-ajax

L'idée est la suivante :
- Si l'utilisateur n'utilise pas le Javascript, on utilisera le lien html normal avec href et on chargera la page complète. Le script Ajax ne sera pas exécuté du coup.
- Si l'utilisateur utilise Javascript, on stoppe l'exécution du href avec du javascript et on lance le script Ajax.

La fonction sensée stopper le href et charger le contenu :

$(document).ready(function(){
   $('a').click(function(){
      var url = $(this).attr('href');
      $('#ContenuAjax').load(url);
      return false;
   });
}); 


Mon problème :
Le script marche bien, le contenu est inséré en Ajax avec le javascript, et la page complète est rechargée quand je le désactive.
MAIS, avec le javascript, une fois que le contenu Ajax est chargé, mon navigateur commence à charger une nouvelle page (j'imagine que c'est le href qui se lance quand même), et mouline à l'infini. En gros, j'ai une page blanche, avec
"Transfert des données depuis t3590.trafiz.net" dans la barre d'état.

Question : comment éviter que ça se produise ?

Merci.

6 réponses

1992clement
 
Oki merci ! :)
J'ai fini par résoudre le problème, mais j'ai tellement torturé le code que je ne sais plus ce qui a modifié quoi >_>

Par contre, j'ai une autre question qui touche plus au référencement :
Est-ce que le nombre de liens pointant vers une page a une influence sur la manière dont elle est référencée, (classement des pages), ou est-ce qu'un seul lien suffit pour qu'elle soit référencée, et que le classement ne tient qu'au contenu ? =)
1
1992clement
 
Bon, finalement, je suis revenu à la méthode précédente.
Au final, faut faire comme ça :
<a onclick='ajax("mapage.php"); return false;' href="mapage.php">

Le truc, c'est de faire l'appel à la fonction et le return false avant le href.

Maintenant, j'ai un autre problème :
Dans le fichier "mapage.php", j'ai de nouveau un lien du même style :
<a onclick='ajax("mapage2.php"); return false;' href="mapage2.php">

Or ce lien là ne marche pas si le contenu a été chargé via Ajax.

En gros :
Index.php charge mapage.php en ajax, qui elle même contient un lien ajax vers mapage2.php. Ce dernier lien ne fonctionne pas alors que le premier, si.

Une solution ? =)
1
kelsett Messages postés 353 Date d'inscription   Statut Membre Dernière intervention   62
 
Oui, appelle ta librairie ajax dans chacune de tes pages... :S
0
1992clement
 
C'est pas la librairie Ajax qui est appelée, c'est juste la fonction qui me permet de sélectionner la div et d'y charger le contenu.
0
kelsett Messages postés 353 Date d'inscription   Statut Membre Dernière intervention   62
 
C'est bizarre en effet, car ton code est correct... Essaie peut-être de mettre un onclick="return false;" dans ta balise <a>, je ne sais pas si ça changera quelque chose mais ça changera quelque chose mais ça ne coûte rien d'essayer.

Sinon si cela peut te rassurer, Google s'est nettement amélioré et son moteur doit maintenant prendre en charge les liens javascript également dans son référencement... Mais si tu ne veux pas prendre de risques, une alternative à ta solution serait de créer un plan de site avec tes liens ;)
0
Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   894
 
et pourquoi pas mettre:

<a href="javascript:ajax('mapage2.php');" >
0
1992clement
 
Parce que je connaissais pas :P
Est-ce que le lien marche si l'utilisateur a désactivé Js ?
0

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

Posez votre question
Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   894
 
si javascript desactivé ça ne marche pas, mais si un internaute désactive son JS, il ne pourra pas naviguer sur beaucoup de sites.
et dans ton cas Ajax ne marchera pas, donc appel de la page .php sans l'effet escompté
0
1992clement
 
Le truc, c'est justement de permettre à un utilisateur sans javascript de pouvoir quand même suivre le lien. C'est vrai qu'il n'y a plus beaucoup de personnes dans ce cas, en revanche, je ne suis pas certain que les moteurs de recherche soient à la page. Donc si tu veux que ton site soit référencé, t'as intérêt à prévoir une navigation dégradée.

Sinon, au niveau de ma fonction Ajax(), voilà tout ce qu'elle contient :

function Ajax(url){
      $('#divAjax').load(url);
      return false;
};


On charge le fichier passé en parametre (url) dans la div qu'on veux (divAjax).
Le code fonctionne très bien et permet la navigation dégradée.
Le return false; sert à éviter d'envoyer une requette "normale" à cause du href. Ce qui rechargerait la page comme un lien normal et Ajax n'aurais plus aucune utilité.
0
Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   894
 
Ajax c'est une fonctionalité de javascript
0