Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/412.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何处理从express server发送的ajax post响应?_Javascript_Jquery_Node.js_Ajax_Express - Fatal编程技术网

Javascript 如何处理从express server发送的ajax post响应?

Javascript 如何处理从express server发送的ajax post响应?,javascript,jquery,node.js,ajax,express,Javascript,Jquery,Node.js,Ajax,Express,我是初学者,所以我不知道我的问题是否清楚。 我的问题是,我从express服务器发送的响应显示在页面中,但我无法在客户端使用jquery处理它 服务器端: router.post("/", [ //check inputs using expres-validator ], (req, res)=>{ //handle validation results var errors = validationResult(req);

我是初学者,所以我不知道我的问题是否清楚。 我的问题是,我从express服务器发送的响应显示在页面中,但我无法在客户端使用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事件仅在位于表单元素内时激发, 因此,将提交事件附加到按钮或输入将不起作用

以下是参考资料:

因此,要解决问题,请尝试以下方法:

/*
 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)
            });

        };
    });

这就是click工作的原因,因为当您单击元素时,click会触发。我希望这是有道理的

.done(data=>{alert(data)console.log(data);})
是您获得响应并处理它的部分。如果它不起作用,它会继续将响应记录到页面而不是控制台。您能显示您的“/signup/route吗?我只看到“/”的路由,因为在jquery中,您正在对“/signup/”路由进行http post。谢谢,我编辑了这个问题。
/
/signup
路线。是的,你能给我看看你的html吗?这样我可以更好地了解表单的结构。所以我对jquery不是很熟悉,但您只是选择输入元素并向其附加提交事件吗。如果可能的话,在在线编辑器中显示代码会有很大帮助。我还可以向您展示一种更好、更简单的使用FetchAPI的方法。我编辑了这篇文章,让我知道这是否有意义,然后按我说的做。