2010-10-10 4 views
3

OK, donc je viens de commencer à utiliser sammy.js, je ne le fais pas très bien mais j'ai été capable de faire fonctionner les bases assez rapidement. formulaire HTML J'utilisePourquoi sammy.js n'utilise jamais post route?

<form id="contact_form" action="#/form" method="post"> 
<label for="name">Name:</label><input class="textbox" type="text" name="name" id="name" /> 
<label for="email">E-mail:</label><input class="textbox" type="text" name="email" id="email" /> 
<label for="message">Message:</label><textarea class="textbox" name="message" id="message"></textarea> 
<button type="submit" name="submit" value="Submit" id="submit" /> 
<p id="message_outcome"></p> 

js J'utilise pour acheminer mes urls

var app = $.sammy(function(){ 
    this.element_selector = '#page1'; 
    this.get('#/about',function(context){ 
     $("ul#nav li").removeClass("active"); //removes "active" class 
     $('#nav_1').addClass("active"); //adds "active" class to the tab that is selected 
     $.post('home/about','', function(resp){ 
      $('#page1').html(resp); 
      $('#page_container').cycle(0); //the number of the div that will be shown on click 
     }); 
    }); 

    this.post('#/form', function(context){ 
     this.log('Form Submission'); 

    }); 
}); 


$(function(){ 
    app.run('#/about'); 
}); 

Lorsque l'URL a #/forme, je reçois un journal de la console qui indique son fonctionnement route get ('#/forme') .. des idées?

Voici quelques informations qui peuvent aider

Plugin Jquery J'utilise en dehors de sammy

http://jquery.malsup.com/cycle/

C'est ce que ma console chromée dit lorsque je clique sur mon formulaire soumettre. [Dim Oct 10 2010 05:29:27 GMT-0400 (heure avancée de l'Est)] runRoute obtenir #/form /public/js/lib/sammy.js:96 [Dim Oct 10 2010 05:29:27 GMT- 0400 (heure avancée de l'Est)] 404 Not Found obtenir #/formulaire Erreur: 404 Not Found obtenir #/formulaire

Répondre

4

Une autre chose à garder à l'esprit pour les routes post est de comprendre comment fonctionne sammy. Lorsque Sammy est initialisé, il est lié à un sélecteur jQuery.

var app = $.sammy('#content', function() { 
    ... 
}); 

Pour les routes de poste, Sammy se fixe à toutes les formes à l'intérieur du sélecteur utilisé pour initialiser (#content dans notre exemple) l'application et écoute pour les événements de clic généré par la forme annexez ces obtient barboter au parent . Maintenant, lorsqu'il voit l'événement submit pour le formulaire, il exécutera l'itinéraire correspondant si le formulaire pointe vers un itinéraire. Ce qu'il faut garder à l'esprit, c'est que si votre formulaire est en dehors du sélecteur principal (par exemple, dans l'en-tête qui est en dehors de #content), sammy ne recevra jamais l'événement submit et le post-routage ne sera jamais exécuté.

1

C'est parce que vous exécutez un HTTP GET à '#/form' si vous venez de taper une URL dans votre navigateur . Le moyen de déclencher le POST serait de vous soumettre un formulaire. Vous voulez configurer à la fois les itinéraires d'arrivée et de départ. Obtenir montre le formulaire et la publication gère la soumission.

0

J'ai récemment découvert que Sammy.js attraper l'exception provenant de code JavaScript erroné à l'intérieur app définition échange la demande d'origine à un GET générique avec l'URL envoyée à l'origine. C'est vraiment déroutant et tout ce que vous avez à faire est de déboguer votre script pour un mauvais usage de la fonction/méthode. Une fois que tout est dégagé, le POST original passe comme par magie.

Questions connexes