Node,Express,Ajax,表单提交

时间:2018-04-10 19:00:11

标签: node.js ajax express

帮助,我被困住了!我正在使用Node Express进行CRUD设置但使用AJAX发布请求。我的阅读表格工作正常。

表单有一个输入字段,即查找电子邮件。 AJAX使用以下代码发布表单数据

if ($("#rsvp-search-form").length) {
    $("#rsvp-search-form").validate({
        rules: {
           ...
        },

        messages: {
            ...
        },

        submitHandler: function (form) {
            $("#loader").css("display", "inline-block");
            $.ajax({
                type: "POST",
                url: "/",
                data: $(form).serialize(),
                success: function (data, textStatus, jqXHR){ 
                    if (typeof data.redirect == 'string')
                    window.location = data.redirect;
                }
                ,
                error: function() {
                    $( "#loader").hide();
                    $( "#error").slideDown( "slow" );
                    setTimeout(function() {
                    $( "#error").slideUp( "slow" );
                    }, 5000);
                }
            });
            return false; // required to block normal submit since you used ajax
        }

    });
}

我有一个到'/'的快速发布路由,它返回res.status(#)。send()的状态,并根据状态#是400还是200执行正确的成功/错误块。

现在在更新表单上我有相同的基本设置和更多表单输入,但是AJAX代码不会通过执行正确的成功或错误块来处理res.status(#)。send()响应,而是只是加载一个新页面,其中包含与处理请求时相同的URL。

AJAX代码请求与顶部类似,但不同于url:

submitHandler: function (form) {
                $("#loader").css("display", "inline-block");
                $.ajax({
                    type: "POST",
                    //The website when loaded has an invitation 
                    //object that is passed by express
                    url: "/rsvp/" +invitation._id,
                    data: $(form).serialize(),
                    dataType: 'application/json'

我确认正确的邮政路线正在运行并收到邀请._id。它返回res.staus(#)。send(),但是ajax不会处理成功或错误块,它只是重定向到请求网址,但实际上并没有呈现网址。

我不知道表单是否还在处理默认操作,如果来自快递的响应不正确等等

我希望我能清楚自己的问题,有人知道我在这里做错了什么。

问候!

1 个答案:

答案 0 :(得分:0)

更新!

我得到了它的工作。虽然带有变量的url是正确的并且express正在接收正确的id,但是JS抛出了导致一切崩溃的错误。我从未发现错误,因为页面将重新加载到空白页面并清除控制台。我通过在渲染表单时将id保存在隐藏字段中来修复它并使用它。似乎解决了这个问题。

感谢您的期待!