节点js中的ajax响应问题?

时间:2017-09-11 14:25:33

标签: javascript node.js ajax

所以,基本上我正在尝试从我的ajax帖子向我的节点js后端发送请求。然后我试图从节点js返回响应并更新我的视图。现在,这是发生的事情。我可以在控制台中看到整个html像页面一样加载,而不仅仅是更新视图中的resulttoken。我真的很困惑。请指出我的错误。这是我到目前为止所尝试的。

 $(document).ready(function () {
   $('#Notification_NumberOfContractors').keyup(function () {

       var empty = false;           
       $('#Notification_NumberOfContractors').each(function () {
           if ($(this).val() == '') {
               empty = true;
           }
       });

       if (empty) {
           $('#ProjectDetailsNextPage').attr('disabled', 'disabled');
       } else {
           $('#ProjectDetailsNextPage').removeAttr('disabled');
       }
   });
})()

服务器

<!DOCTYPE html>
<html>
<body>
<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>

<form id="registerSubmit">
    Phonenumber:<br>
    <input type="text"  name="phonenumber" id="phonenumber">
    <br>
    Review:<br>
    <input type="text"  name="review" id="review">

    <br><br>
    <input type="submit" value="Submit" onclick="gettoken()">

    <br>
    Token: <%=resulttoken%>;



</form>
<script type="text/javascript">
    function gettoken() {

        event.preventDefault();

        var phonenumber = $("#phonenumber").val();
        var review = $("#review").val();

        $.ajax({
            url: '/home',
            data: {
                "phonenumber": phonenumber,
                "review": review
            },
            error: function (err) {
                console.log("ERROR",err)
            },

            success: function (info) {
                console.log("info",info);
            },
            type: 'POST',
        });
    }
</script>

</body>
</html>

这是在控制台日志上加载的内容

app.post("/home", function (req, res) {

    var s = -1;
    var t = -1;
    var m = -1;

    var phonenumber = req.body.phonenumber;
    var review =  req.body.review;
    console.log(phonenumber);
    fd.insertreview(phonenumber,review).then(function(v) {

        if(v=="1") {
            console.log("Your review has been inserted successfully");


            s = md.getRand();
            console.log("Unique number is",s);

            fd.checkifuniquenumberexists(s).then(function(u){
               if(u!="1"){
                   console.log("Unique number doesnt exist");
                   fd.inserttoken(s,phonenumber).then(function (p) {
                       if(p=="1"){

                           console.log("Token has been inserted successfully");
                           res.render('trial',{"resulttoken":s});

                       }

                   })
               }
            });


        }
    });


    });

1 个答案:

答案 0 :(得分:2)

问题在于这一行

res.render('trial',{"resulttoken":s});

您将整个页面作为回复返回,如果您只需要令牌,则可以将其作为JSON响应的一部分返回,例如。

res.status(200).json({ token: s });

然后在客户端

$.post('/home', { phonenumber, review }, res => {
    // use res.token
    console.log(`Token: ${res.token}`);
})
.fail(console.error);