Jquery Express:从服务器获取ajax响应
我想使用ajax将一些表单数据发送到服务器,对其进行检查并将结果返回给客户端。目前,我没有收到任何数据。我不明白我要做什么改变才能让它工作 服务器端: 在my Express app.js中: 在my login.js路径中: 客户端: 在my index.jade文件中: 使用jQuery验证插件在我的login_window.js文件中:Jquery Express:从服务器获取ajax响应,jquery,ajax,json,node.js,jquery-validate,Jquery,Ajax,Json,Node.js,Jquery Validate,我想使用ajax将一些表单数据发送到服务器,对其进行检查并将结果返回给客户端。目前,我没有收到任何数据。我不明白我要做什么改变才能让它工作 服务器端: 在my Express app.js中: 在my login.js路径中: 客户端: 在my index.jade文件中: 使用jQuery验证插件在我的login_window.js文件中: $('#loginForm').validate({ rules: { modalMail: { requ
$('#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');
}
});
}
});
当我尝试此操作时,控制台窗口中完全没有显示任何内容。我能做什么
这就是我得到的:
你的回答很好。我想你们已经将success设置为false了,所以它并没有发回数据,而是重新呈现了相同的视图,所以控制台上什么都并没有 正在工作的线路是
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});
}
});
我认为你的问题就在这里,否则,这是另一个问题
submitHandler: function (form) {
$.ajax({
...
data: form, // <--
...
请参阅浏览器中的网络选项卡,请求是否已发送?页面的GET请求状态为304,因此未更改,POST请求状态为200 OK。数据是在服务器上接收的,因为我可以在那里显示。POST请求的响应是什么?我什么也没有得到。在$.ajax调用中,我执行console.log-on-complete、on-success和on-error,但什么都没有。查看我的答案,我认为您的视图正在重新呈现,尝试从登录路径执行真正的成功当我将success设置为true时,它只会转到我的主页。为了测试ajax响应,我将其设置为false;完成此操作后,请查看您的控制台,但当我使用res.json发送json时,它会在一个空白HTML页面中打印json,控制台中仍然没有任何内容。您是否删除了res.render'index',{login:false}?
var success = true;
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});
}
});
submitHandler: function (form) {
$.ajax({
...
data: form, // <--
...
submitHandler: function (form) {
$.ajax({
...
data: $(form).serialize(),
...