好的,所以我刚开始使用 sammy.js ,我不太了解它,但我能够很快地使基础知识工作起来。
我正在使用的 HTML 表单
<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>
我用来路由我的 url 的 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 中有 #/form 时,我会得到一个控制台日志,上面写着它的运行路径 get('#/form') .. 有什么想法吗?
以下是一些可能有帮助的更多信息
除了 sammy 我正在使用的 Jquery 插件
http://jquery.malsup.com/cycle/
这是我的 chrome 控制台在我点击表单上的提交时所说的。
[Sun Oct 10 2010 05:29:27 GMT-0400 (Eastern Daylight Time)] runRoute get #/form/public/js/lib/sammy.js:96
[Sun Oct 10 2010 05:29:27 GMT-0400 (Eastern Daylight Time)] 404 Not Found get #/form Error: 404 Not Found get #/form
最佳答案
发布路线要记住的另一件事是了解 sammy 的工作原理。当 Sammy 被初始化时,它被绑定(bind)到一个 jQuery 选择器。
var app = $.sammy('#content', function() {
...
});
对于 post 路由,Sammy 绑定(bind)到用于初始化应用程序(在我们的示例中为 #content)的选择器中的所有表单,并监听由表单提交生成的点击事件,因为这些事件被冒泡到父级。现在,当它看到表单的提交事件时,如果表单指向一个路由,它将执行相应的路由。
要记住的一点是,如果您的表单在主选择器之外(例如在#content 之外的标题中),那么 sammy 将永远不会收到提交事件,并且永远不会执行 post 路由。
关于jquery - 为什么 sammy.js 从不使用 post 路由?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3899335/