ajax在服务器响应之前完成或失败

时间:2017-05-24 10:19:42

标签: node.js ajax express

我有一个问题,当我使用ajax post数据到我的express(nodejs)服务器时,我在服务器端有一个回调函数,在完成数据库访问后,然后响应客户端ajax。 但是,我发现,在我的服务器回调函数完成之前,ajax .fail将会触发。我尝试设置超时10000,但是,ajax .fail总是直接触发。

服务器:Express(Node.js) 客户端:jQuery(3.2.1)由ajax发布

ajax代码:

    $('#createNewGroup').click(function() {
        $('#loading').show();

        $.ajax({
           url: 'list_live_createNewGroup',
           type: 'POST',
           cache: false,
           data: {  groupname: $('#groupname').val(),
                    groupdesc: $('#groupdesc').val(),
                    grouplocation: $('#grouplocation').val(),
                    accountname: $('#accountname').val(),
                    accountid: $('#accountid').val(),
                    bankname:  $('#bankname').val() }})
        .done(function(data) {

            $('#loading').hide();

            window.location.hash = '#mygroups';
            window.location.reload(true);
        })
        .always(function(data) {

        })
        .fail(function(data) {
            $('#loading').hide();

            var response = JSON.parse(data["responseText"]);
            alert(response["msg"]);

            window.location.href = "list#creategroup";

        });
    });

服务器端代码:

router.post('/list_live_createNewGroup', tools.checkUserLogin, function(request, response) {
    var currentUser = new Parse.User();
    currentUser.id = request.session.user;

    .......

    newUserGroup.save(null, {
        success: function(newUserGroup)  {

            response.json(true);
        },
        error: function(newUserGroup, error) {
            response.json(true);
        }
    });



});

1 个答案:

答案 0 :(得分:0)

经过一些修改后,我找出了真正的问题。 为了我使用JQuery控制Button将信息发布到服务器端。但是,我的html写

<input type="submit" id="createNewGroup">

输入类型&#34;提交&#34;将混淆JQuery做其他事情。因此,我已将输入类型更改为按钮,问题解决了。