Est-il possible d'établir des liens normaux se chargent automatiquement par ajax, plutôt que normalement?

StackOverflow https://stackoverflow.com/questions/1449074

Question

Je ne l'ai pas bien expliqué cela.

Mais ce que je veux dire, si j'ai un script ajax qui charge le contenu d'une page dans un élément DIV, grâce à la fonction « LoadPage ( » whatever.php ') ;, au lieu de faire le tour faire manuellement ce à tous liens, est-il un moyen d'avoir un script qui fait automatiquement tous les liens réguliers charge à travers cette fonction ajax?

Comme sur Facebook, vos charges de profil par ajax, mais si vous regardez leur code, ils ont juste un lien régulier au profil.

Vive!

Était-ce utile?

La solution

Bien sûr, vous pouvez le faire avec jQuery.

Ce script passe par le document, trouve tous les éléments d'ancrage et se fixe un gestionnaire d'événements à l'événement clic de chacun. Lorsque l'élément d'ancrage est cliqué, le gestionnaire d'événements trouve l'attribut href et charges page en #targetDiv (vous pouvez appeler cette div que vous voulez, bien sûr).

<script type="text/javascript"
        src="http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js">
</script>
<script type="text/javascript">
$(document).ready(function() {
  $("a").click(function() {
    $("#targetDiv").load(($(this).attr("href") + " body");
    return false;
  });
});
</script>

...

<!-- In your document body, this is the div you'd load the pages into. -->
<div id="targetDiv"></div>

Autres conseils

Vous pouvez utiliser JQuery pour cela (si je comprends bien votre question à droite).

D'abord, vous pouvez faire la fonction LoadPage () comme suit:

function loadpage(divId, url) {
    $('#' + divId).load(url);

    return false;
}

.load () ne sont pas pris en charge par tous les navigateurs bien. Si vous voulez faire cela sans .load (), vous pouvez consulter .get (). , Jetez un oeil Pour plus d'informations sur .load () http://docs.jquery.com/Ajax / charger

Je suppose que ce serait quelque chose comme ceci:

$(document).ready(function(){
    $("a").click(function(){
        $("body").load($(this).attr("href") + " body");
        return false;
    });
});

Cela rendrait toutes les balises <a> sur la page d'appeler une fonction qui télécharge un document HTML à partir de l'attribut href de la balise, dépouilleront il de la balise du corps, et remplacer le contenu de la balise body de la page en cours avec le contenu de la nouvelle balise body. De cette façon, il est plus facile de travailler cela sans JavaScript, ainsi que l'intégrer dans un site existant.

Pour l'utiliser, vous placez ceci dans une balise <script> dans la tête de votre page principale, ou dans un fichier JS externe.

S'il vous plaît noter toutefois que ce code ne met à jour le contenu de la balise <body>, la tête (y compris la balise de titre) reste intacte. Vous devrez peut-être ajouter du code supplémentaire pour mettre à jour des choses comme cela.

Simple et Nice. Regarde ça: Bjax

Utilisation:

<script src="bjax.min.js" type="text/javascript"></script>
<link href="bjax.min.css" rel="stylesheet" type="text/css" />

Enfin, inclure dans la tête de votre html:

$('a').bjax();

Pour plus de paramètres, démonstration de votre commande ici: Bjax Démo

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top