好的,所以我刚开始使用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>
我用它来路由我的网址
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');
});
当网址中包含#/ form时,我会收到一个控制台日志,其中显示了其运行路径get('#/ form')..任何想法?
以下是一些可能有用的信息
Jquery插件我正在使用sammy
http://jquery.malsup.com/cycle/
当我点击表单上的提交时,这就是我的chrome控制台所说的内容。 [Sun Oct 10 2010 05:29:27 GMT-0400(东部夏令时间)] 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
答案 0 :(得分:4)
对于帖子路线要记住的另一件事是了解sammy是如何工作的。当Sammy被初始化时,它被绑定到jQuery选择器。
var app = $.sammy('#content', function() {
...
});
对于帖子路由,Sammy绑定到用于初始化(在我们的示例中为#content)应用程序的选择器内的所有表单,并监听表单提交生成的点击事件,因为这些表单被冒泡到父级。现在,当它看到表单的提交事件时,如果表单指向路由,它将执行相应的路由。
要注意的是,如果你的表单在主选择器之外(例如在#content之外的标题中),那么sammy将永远不会收到提交事件,并且后期路由永远不会执行。
答案 1 :(得分:1)
这是因为如果您只是在浏览器中输入了URL,那么您正在运行HTTP GET到'#/ form'。触发POST的方法是提交表单。您想要设置get和post路由。获取显示表单和帖子处理提交。
答案 2 :(得分:0)
我最近发现Sammy.js捕获来自app
定义中的一些错误JavaScript代码的异常会将原始请求与原始发送的URL交换为某些通用GET。这实在令人困惑,您所要做的就是调试脚本以避免某些功能/方法滥用。当你全部清理完毕后,原来的POST会像魔术一样通过。