2010-10-10 40 views
3

好的,所以我刚开始使用sammy.js,我不是很好,但我能够很快得到基础知识。我使用为什么sammy.js从不使用邮政路线?

<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我用路由我的网址

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'); 
}); 

当URL具有#/形式,它 HTML表单,我得到的说,它的运行控制台日志路线get('#/ form')..任何想法?

下面是一些更多的信息,可以帮助

jQuery插件,我使用的是除了萨米

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

这是我的铬控制台说什么,当我点击提交我的形式。 [太阳2010年10月10日5时29分27秒格林尼治标准时间0400(东部夏令时间)] runRoute GET#/形式/public/js/lib/sammy.js:96 [太阳2010年10月10日5时29分27秒GMT- 0400(东部夏令时)] 404未找到获取#/表单错误:404未找到获取#/表格

回答

4

另一件事要记住的邮路是了解萨米是如何工作的。当Sammy被初始化时,它会被绑定到一个jQuery选择器。

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

对于邮路,萨米结合用于初始化(在我们的例子#内容)的应用程序选择器内的所有形式和监听通过形式产生的点击事件提交这些被冒泡到父。现在,当它看到表单的提交事件时,如果表单指向路由,它将执行相应的路由。

在要记住的是,如果您的形式是主要的选择之外(例如,在报头之外#内容),那么萨米将永远不会收到提交事件和布线后会不会执行。

1

这是因为如果您只是在浏览器中键入URL,则您正在运行HTTP GET以'#/ form' 。触发POST的方法是提交你的表单。你想要设置获取和发布路线。获取显示表单并发布处理提交。

0

我最近发现Sammy.js捕捉异常来自app定义中的一些错误的JavaScript代码,它将原始请求与最初发送的URL交换为一些通用GET。这真是令人困惑,你所要做的就是调试你的脚本,以避免某些函数/方法被滥用。当你全部清理完毕后,原来的POST会像魔术一样得到解决。

相关问题