繁体   English   中英

如何处理来自快递服务器的Ajax发布响应?

[英]How to handle ajax post response sent form express server?

我是一个初学者,所以我不知道自己是否清楚自己的问题。 我的问题是我从快递服务器发送的响应显示在页面中,但是我无法使用jquery在客户端处理它。

服务器端:

router.post("/", [
    //check inputs using expres-validator
    ],
    (req, res)=>{
        //handle validation results
        var errors = validationResult(req);
         if (!errors.isEmpty()) {
            //filter errors
            res.status(400).send([usernameErr, emailErr, passwordErr]);
        }else {
            res.sendStatus(200);
        };
});

客户端:

$(".form-div form input[type='submit']").submit(function(e){
        e.preventDefault();
        if($(this).parent().parent().attr("id") == "signup-form-container"){
            $.post('/signup', $('#signup-form-container form').serialize())
            .done(data=>{
                alert(data)
                console.log(data);
            })
            .fail((err, textStatus)=>{
                alert(err)
                console.log(err)
            });

        };
    });

我正在将我的注册文件(具有上述路由)导出到我的主文件中。

app.use("/signup", require(`${__dirname}/routes/signup.js`));

因此,如果您检查选择器:

$(".form-div form input[type='submit']") // this is selecting the input element

但是,submit事件仅在其位于form元素内部时才触发,因此将Submit事件附加到按钮或输入将不起作用。

这是参考: https : //developer.mozilla.org/zh-CN/docs/Web/API/HTMLFormElement/submit_event

因此,要解决此问题,请尝试以下操作:

/*
 Here you are selecting the form, so submitting here will work. 
*/
$(".form-div form").submit(function(e){
        e.preventDefault();
        if($(this).parent().parent().attr("id") == "signup-form-container"){
            $.post('/signup', $('#signup-form-container form').serialize())
            .done(data=>{
                alert(data)
                console.log(data);
            })
            .fail((err, textStatus)=>{
                alert(err)
                console.log(err)
            });

        };
    });

这就是单击有效的原因,因为单击元素时会触发。 我希望这是有道理的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM