【发布时间】:2015-02-12 02:00:09
【问题描述】:
我想使用 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');
}
});
}
});
当我尝试这个时,我在控制台窗口中完全没有得到任何东西。我能做什么?
这是我得到的:
【问题讨论】:
-
在浏览器中查看网络标签,请求是否发送?
-
GET 请求页面的状态为 304(因此未更改),POST 请求的状态为 200(正常)。数据在服务器上接收,因为我可以在那里显示。
-
POST 请求的响应是什么?
-
我什么也得不到。在
$.ajax调用中,我在完成、成功和错误时执行console.log,但什么都没有。 -
看我的回答,我想你的视图正在重新渲染,尝试从登录路径取得真正的成功
标签: jquery ajax json node.js jquery-validate