2014-12-13 78 views
0

我想使用ajax發送一些表單數據到服務器,讓它檢查並得到一個結果回到客戶端。目前,我沒有收到任何數據。我不明白我必須改變才能使其工作。快速:從服務器獲取ajax響應

服務器端:

在我的快遞app.js

var login = require('./routes/login'); 
app.use('/login', login); 

在我login.js路線:

router.post('/', function (req, res) { 
    var loginObject = req.body; 
    console.log(loginObject); 
    var success = false; //This is just for testing!! 
    if (success) { 
     req.session.user = loginObject.email; 
     req.session.userID = 1; //Stubbing 
     res.render('home'); 
    } else { 
     res.json({'success': false}); 
    } 
}); 

客戶端:

在我index.jade文件:

script(src='/javascripts/login_window.js') 

在我login_window.js文件(使用jQuery驗證插件):

$('#loginForm').validate({ 
    rules: { 
     modalMail: { 
      required: true, 
      email: true 
     }, 
     modalPass: { 
      required: true, 
      minlength: 8 
     } 
    }, 
    errorPlacement: function(error, element) { 
     element.closest('div.form-group').removeClass('has-success').addClass('has-error'); 
    }, 
    success: function(label, element) { 
     $(element).closest('div.form-group').addClass('has-success').removeClass('has-error'); 
    }, 
    submitHandler: function (form) { 
     $.ajax({ 
      url: '/login', 
      type: 'POST', 
      dataType: 'json', 
      data: form, 
      contentType: 'application/json', 

      complete: function() { 
       console.log('process complete'); 
      }, 
      success: function(data) { 
       console.log(data); 
       console.log('process success'); 
      }, 
      error: function() { 
       console.log('process error'); 
      } 
     }); 
    } 
}); 

當我嘗試,我得到在控制檯窗口中絕對沒有。我能做什麼?

這就是我得到:

console

+0

看到browswe網絡選項卡,請求被髮送或沒有? – 2014-12-13 13:24:16

+0

對頁面的GET請求具有狀態304(因此未更改)並且POST請求具有狀態200(OK)。數據在服務器上被接收,因爲我可以在那裏顯示數據。 – JNevens 2014-12-13 13:27:05

+0

什麼是POST請求的響應? – 2014-12-13 13:27:47

回答

0

你的反應是好的。和我你所以不發回的數據是重新在控制檯上呈現了同樣的看法所以沒什麼

該行正在設置成功爲假的就是

 res.render('index', {login: false}); 

爲了測試

改變

var success = true; 

其次,而不是渲染視圖中,可以在發送Ajax請求一個JSON數據或一些東西

router.post('/', function (req, res) { 
    var loginObject = req.body; 
    console.log(loginObject); 
    var success = false; //This is just for testing!! 
    if (success) { 
     req.session.user = loginObject.email; 
     req.session.userID = 1; //Stubbing 
     res.json({"success":true}); 
    } else { 
     res.json({"success":false}); 
    } 
}); 
+0

當我將'success'設置爲'true'時,它會進入我的'home'頁面。爲了測試ajax響應,我把它放在'false'中。 – JNevens 2014-12-13 13:33:18

+0

好在else block發送這個res.json({「success」:false}); – 2014-12-13 13:34:28

+0

並在完成之後看到你的控制檯 – 2014-12-13 13:34:45

0

我認爲你的問題就在這裏,否則,這是另一個問題...

submitHandler: function (form) { 
    $.ajax({ 
     ... 
     data: form, // <-- 
     ... 

插件的form說法只是代表該插件的形式對象。

您將需要一個jQuery選擇和使用類似.serialize()獲取的實際數據...

submitHandler: function (form) { 
    $.ajax({ 
     ... 
     data: $(form).serialize(), 
     ...