【问题标题】:Node, Express, Ajax, Form SubmissionNode、Express、Ajax、表单提交
【发布时间】:2018-04-10 19:00:10
【问题描述】:

救命,我卡住了!我正在使用 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 不处理成功或错误块,它只是重定向到请求的 url,但实际上并不呈现 url。

不知道是不是表单还在处理默认动作,是不是express的响应不正确等等

我希望我已经清楚我的问题,并且有人知道我在这里做错了什么。

问候!

【问题讨论】:

    标签: node.js ajax express


    【解决方案1】:

    更新!

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

    感谢收看!

    【讨论】:

      猜你喜欢
      • 2019-01-07
      • 2015-11-07
      • 1970-01-01
      • 2019-02-11
      • 2011-06-17
      • 2014-02-19
      • 2011-05-09
      • 1970-01-01
      相关资源
      最近更新 更多