2013-02-13 91 views
0

我開始瞭解Expressjs,Twitter Bootstrap和BackBonejs。 我已經使用命令行工具創建了基本的Expressjs應用程序,併爲登錄表單添加了一個index.html。當用戶點擊附有活動的「登錄」按鈕時,我檢索表單信息並調用「/ login」路由的ajax調用,但它不起作用。AJAX表單請求未發送到Express web服務器

這裏列出必要的文件:

謝謝你的幫助。

回答

1

問題是形式還是通過重定向提交因爲這是它的默認bahavior,也沒有被指示否則。而且,由於重定向,瀏覽器正在放棄Ajax請求。

爲了防止重定向,你要綁定到<form>.submit() event和使用event.preventDefault()

$(document).ready(function() { 
    $('#login-form').submit(function (e) { 
     e.preventDefault(); 
    }); 
}); 

這也可能是值得使用此事件爲Ajax而不是在該.click()<button>儘可能多的瀏覽器允許通過其他操作,除了提交只需點擊一個按鈕type="submit"(例如,按輸入當焦點在一個<input type="text">):

$(document).ready(function() { 
    $('#login-form').submit(function (e) { 
     e.preventDefault(); 

     var _login = $('#login').val(), 
      _password = CryptoJS.SHA512($('#password').val()), 
      _remember = $('input:checkbox:checked').val() ? 1 : 0; 

     // etc. 
    }); 
}); 
+0

謝謝你的幫助!它沒有解決我的問題,但它幫助我理解爲什麼當點擊「登錄」按鈕時重新加載頁面。我發現我的錯誤。在使用HTTPS協議的網站上包含使用HTTP協議的源代碼不是一個好主意!現在它非常棒!謝謝你們 ! – Ismael 2013-02-15 13:18:59

0

首先,你需要防止從按鈕的默認操作,請點擊:

$('#btn-login').click(function() { 
    // ... 
}); 

// should accept the passed event and `prevenDefault`, like... 

$('#btn-login').click(function (e) { 
    e.preventDefault(); 
    // ... 
});