无法使用ajax调用向客户端发送状态

时间:2018-02-08 13:26:13

标签: javascript jquery ajax html5

// app.js 这是我的注册路由,用户名是表中loginDetails表中的主要用户名。所以我能够看到用户名没有重复,但无法将该错误消息发送到registration_script.js。它一直给我失败的回调。

以下是server.js中的注册路由:

app.post('/register', function (req, res) {

    let dbConnectionObject = db.dbConnection();
    let status = 200;
    let status_msg = "New user has registered";
    let sql = "insert into loginDetails values('" + req.body.username + "','" + req.body.password + "')"

    dbConnectionObject.query(sql, function (err, result) {

        dbConnectionObject.end();
        if (err) {
            console.log(err);
            status = 404;
            status_msg = "Username exists";
            console.log("in if")
            return res.status(200).send(status_msg)
        }
        else {
            console.log("in app.js insert")
            console.log(result);
            return res.status(200).send(status_msg)

        }
    })

在ajax调用请求中,无论app.js中的if-else语句如何,都会触发所有时间的故障回调 //registration_script.js

 if ((password == $('#cpassword').val()) && ($('#password').val()) && ($('#user').val()) && ($('#cpassword').val())) {
            let login_new = {
                username: username,
                password: password
            }
            $.ajax({
                url: server_url + "/register",
                type: "post",
                data: login_new,
                //Success callback
                success: function (msg) {
                    alert(msg);
                    window.location.href = "../index.html";
                 }
                ,
                error: function (jqXHR, status, err) {

                    //error callback 
                    alert("Registration failed" + err + "stau" + status);

                }
            })
        }

所以请帮助我根据条件实现成功和失败回调。

提前谢谢

1 个答案:

答案 0 :(得分:-1)

您不应该在错误块中返回状态为200的响应:

 if (err) {
        console.log(err);
        status = 404;
        status_msg = "Username exists";
        console.log("in if")
        return res.status(200).send(status_msg)
    }

而不是这样做

 return res.status(status).send(status_msg)