2009-05-14 9 views
1

Je me demande comment capturer tous les liens sur une page en utilisant jQuery. L'idée étant similaire à Facebook. Dans Facebook, si vous cliquez sur un lien, il capture le lien et charge le même lien en utilisant ajax. Ce n'est que lorsque vous ouvrez un lien dans un nouvel onglet, etc., qu'il chargera la page en utilisant un appel régulier.Capture tous les liens, y compris la soumission de formulaire

Tout indice sur la façon d'obtenir ce type de fonctionnalité? Je suis sûr que les liens de capture ne devraient pas être un problème, mais qu'en est-il des soumissions de formulaire de capture, puis de soumettre l'ensemble des données via ajax et ensuite afficher les résultats?

Existe-t-il un plug-in qui existe déjà?

Nous vous remercions de votre temps.

Répondre

1

Alec,

Vous pouvez certainement le faire.

J'ai un formulaire qui est géré de cette façon. Il utilise le plugin de formulaire jquery kgiannakakis mentionné ci-dessus. Exemple javascript ci-dessous montre comment cela pourrait fonctionner.

$("form").ajaxForm({ 
    beforeSubmit: function(){ 
     //optional: startup a throbber to indicate form is being processed 
     var _valid = true; 
     var _msg = ''; 
     //optional: validation code goes here. Example below checks all input 
     //elements with rel attribute set to required to make sure they are not empty 
     $(":input [rel='required']").each(function(i){ 
      if (this.value == '') { 
       _valid = false; 
       _msg += this.name + " may not be empty.\n"; 
       $(this).addClass("error");  
      } 
     }); 
     alert(_msg); 
     return _valid; 
    }, 
    success: function(response){ 
     //success here means that the HTTP response code indicated success 
     //process response: example assumes JSON response 
     $("body").prepend('<div id="message" class="' + response.status + '"></div>'); 
     $("#message").text(response.message).fadeIn("slow", function(){ 
       $(this).fadeOut("slow").remove(); 
     }); 
    } 
}); 
0

Form plug-in peut transformer une forme régulière à un Ajax un:

$("#myForm").ajaxForm(
    {beforeSubmit: validate, success: showResponse}); 

Il serait difficile de faire ce que vous voulez mais pour une forme arbitraire. Que faire si le formulaire utilise la validation ou est soumis par Ajax pour commencer? La même chose s'applique pour les liens. Que faire s'il y a des scripts de navigation javascript (window.location = Url)? Si vous n'avez pas le contrôle total de la page, il sera difficile de faire ce que vous voulez.

+0

J'ai le contrôle de la page. Mais je ne veux pas modifier la page de toute façon. Je veux ajouter de façon transparente un plugin jquery qui fait automatiquement tout. –

0

Habituellement, des pages comme Facebook font chaque événement et chaque formulaire codé séparément, car les fichiers côté serveur sont généralement définis pour chaque opération/groupe d'opérations. Je doute qu'il y aura un moyen propre de convertir une page avec juste un plug-in. Et si c'est le cas, je vois beaucoup de frais généraux.

Vous pouvez le faire à la main, mais encore une fois c'est abus d'Ajax. Ce n'est pas Flash, et en utilisant ajax pour toutes les communications du serveur, vous rencontrez beaucoup de problèmes.

  • Manque de suivi de l'historique.
  • Faire attention aux événements simultanés et aux résultats de ceux-ci.
  • Communiquer à l'utilisateur que la page est en train de changer.
  • Utilisateurs avec javascript désactivés.
  • Et bien plus encore ...
Questions connexes