Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery Express:从服务器获取ajax响应_Jquery_Ajax_Json_Node.js_Jquery Validate - Fatal编程技术网

Jquery Express:从服务器获取ajax响应

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

我想使用ajax将一些表单数据发送到服务器,对其进行检查并将结果返回给客户端。目前,我没有收到任何数据。我不明白我要做什么改变才能让它工作

服务器端:

在my Express app.js中:

在my login.js路径中:

客户端:

在my index.jade文件中:

使用jQuery验证插件在我的login_window.js文件中:

$('#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(),
        ...