我想使用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 Validation插件):
$('#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');
}
});
}
});
当我尝试这个时,我在控制台窗口中什么都没有。我该怎么办?
这就是我得到的:
答案 0 :(得分: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});
}
});
答案 1 :(得分:0)
我认为你的问题在这里,否则,这是另一个问题......
submitHandler: function (form) {
$.ajax({
...
data: form, // <--
...
插件的form
参数只代表插件的表单对象。
您需要一个jQuery选择器并使用.serialize()
之类的东西来获取实际数据......
submitHandler: function (form) {
$.ajax({
...
data: $(form).serialize(),
...