为什么sammy.js从不使用邮政路线?

时间:2010-10-10 06:52:47

标签: jquery sammy.js

好的,所以我刚开始使用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

3 个答案:

答案 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会像魔术一样通过。