2010-10-15 9 views
1

Salut J'apprends à utiliser le plugin Adresse Jquery, et je utilise le tutoriel sur hereJquery Adresse Plugin Poster problème

Voici donc le code html

<a href="test1.html" rel="address:/test1">Test 1</a><br /> 
<a href="test2.html" rel="address:/test2">Test 2</a> 

Load Area: <br /> 
<div id="area"></div> 

Et voici le code Jquery

function loadURL(url) { 
     $("#area").load(url); 
    } 


    // Event handlers 
    $.address.init(function(event)) 
.change(function(event) { 
     $("#area").load($('[rel=address:' + event.value + ']').attr('href')); 
    }) 

    $('a').click(function(){ 
     loadURL($(this).attr('href')); 
    }); 

Maintenant, cela fonctionne bien. Cependant, je veux faire un appel POST sur le bouton de retour. Donc, je remplace

$("#area").load($('[rel=address:' + event.value + ']').attr('href')); 

avec

var myhref = $('[rel=address:' + event.value + ']').attr('href'); 
$.post(myhref, function(data) { 
     $('#area').html(data); 
    }); 

Cela jette l'erreur de la console "this.value n'est pas une fonction". Compte tenu de ma connaissance très superficielle de Jquery (& programmation en général), qu'est-ce que je fais mal ici?

+0

En fait, il semble que GET est assez bon pour moi. Mais j'aimerais quand même savoir pourquoi je ne peux pas faire $ .post. –

Répondre

0

Je voudrais que quelqu'un puisse répondre à cette question. J'ai essayé de faire passer cette chose à POST pour un jour maintenant .. Il veut juste obtenir tout ce qu'il semble, mais je suis à une perte de la façon dont je le modifierais pour poster.

+0

L'auteur du plugin a raison, il ne fournit qu'une API pour gérer les changements de hachage d'adresse. Un certain temps passé avec la documentation résout le problème; J'ai posté une implémentation ci-dessous, s'il vous plaît laissez-moi savoir si cela fonctionne pour vous –

+0

J'ai essayé votre code snip et il affiche en effet donc je suppose que c'est un début, mais ce n'est pas réellement envoyer des données par la poste encore. J'ai modifié votre deuxième bloc de code pour ressembler à ceci: $ ("form"). Live ("submit", function() { e.preventDefault(); $ .address.value ($ (this) .attr (" href ")); $ .post ($ (this) .attr (" href "), fonction (données) { $ (" # content "). html (données); }); console.log ('binding to form'); return false; }); en tant que novice à js je ne sais pas où aller à partir d'ici. Toute aide très appréciée! Peut-être que je devrais essayer le plugin de formulaire? – Dobler

+0

okay merci pour le conseil de code. J'ai une bonne idée à ce sujet maintenant. Il n'était pas publié avant parce que je ne savais pas que je devais définir explicitement les données de formulaire lors de l'utilisation de .ajax à envoyer. – Dobler

0
function loadURL(url) { 
     $.post(url, function(data){ 
      $("#area").html(data); 
     }) 
    } 


    // Event handlers 

    $(document).ready(function(){ 
     $("a").click(function(e){ 
      e.preventDefault(); 
      $.address.value($(this).attr("href")); 
      $.post($(this).attr("href"), function(data){ 
       $("#area").html(data); 
      }) 
      return false; 
     }) 
    }) 

    $(document).ready(function(){ 
     $.address.init(function(event) { // Initates the address plugin 
     }).externalChange(function(event) { //externalChange is browser back/fwd button/address bar 
      if(event.path != "/"){ 
       loadURL(event.path); 
      } 
     }) 
    })