ajax没有收到nodejs的响应

时间:2014-01-15 10:00:06

标签: jquery ajax node.js

获得一个带有ajax脚本的注册表单,POST到nodejs后端。 问题是在执行“错误”或(有时!)“成功”事件之前,ajax请求会挂起最多30-60秒。如果设置了超时,则在3秒后触发错误。节点后端立即将结果写入控制台。 ajax或后端有问题吗?

HTML:

    <form id="add" action="" class="col-md-3">
        <div class="form-group">
            <label class="input">username</label>
            <input type="text" name="username" id="username">
        </div>
        <div class="form-group">
            <label class="input">pass</label>
            <input type="password" name="pass" id="pass" class="">
        </div>
        <div class="form-group">
            <input type="hidden" name="new" value="new" id="new">
            <input type="hidden" name="role" value="admin" id="role">
        </div>
        <div id="submit" class="btn">Add</div>

JQuery的:

$(function () {


        $('#submit').on('click', function() {

            var form = $('#add');
            var data = {"username":$('#username').val(), "password": $('#pass').val() , "role": $('#role').val(), "new": $('#new').val()}

            alert ('ajax start: ' + JSON.stringify(data));
            $.ajax({
                url: '/add',
                type: 'POST',
                data: data,
    //            timeout : 3000,

                success: function(responseText, statusText, xhr) {
                    console.log("Worked!" + responseText);
                    alert ('success');

                },
                complete: function() {
                    alert ('complete');

                },
                error: function(err) {
                    console.log('err:');
                    console.log(err);
                    alert ('err: ' + err.statusCode() + " " + err.statusText);
                }
            });
        });
    });

处理请求的路由:

    module.exports = function(req, res) {
        if (req.body.hasOwnProperty("new")){
            //add new user
            console.log('new');
            var Auth = app.locals.Auth;
            Auth.register(req, function (err){
                console.log('ended registration');
                if (err){
                    console.log('err: ' + err + res);

                    res.json({"err":err});
                }else{
                    console.log('successfully registered');
                    res.json({"success":'success'});
                }
                console.log('res.end');
                res.end();
                console.log('return');
                return ;
            });

2 个答案:

答案 0 :(得分:1)

问题出在路线代码中:

    res.end();

只需删除此行

答案 1 :(得分:0)

对我来说似乎没关系。实际上只有改变我可以建议你在响应中添加错误代码和成功代码。

成功:res.json(200, {"success": "success"});

错误:res.json(400, {"error": err});