2014-12-13 114 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(), 
     ...