2010-10-10 62 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會像魔術一樣得到解決。