javascript - 提交表单而不重定向到其他页面

标签 javascript jquery html node.js forms

我一直在尝试制作一个在线HTML表单,它可以提交表单并将数据发布到本地数据库。但是,我不希望页面重定向到 /formfill URL 并将数据发送到数据库而不重定向页面。我已经尝试了很多。然而,没有运气。 这是我的后端 Node.js 代码:

// require('./../config.js');
const express = require('express');
const path = require('path');
var bodyParser = require('body-parser');
var app = express();
var {
    mongoose
} = require('./models/mongoose.js');
var {
    Data
} = require('./models/form.js');

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
app.use(express.static(path.join(__dirname, '..', 'public')));

app.post('/formfill', function (req, res) {

    var data = new Data({
        name: req.body.name,
        mailId: req.body.mailId
    })

    data.save().then((doc) => {
        res.status(200).send(doc);
    }).catch((e)=>{
        res.status(400).send(e);
    })
})


app.listen(3000, () => {
    console.log("Server is up");
});

这是我的 Html 表单:

<form action="/formfill" method="POST" , enctype="application/x-www-form-urlencoded">
  <input class="formfill" type="text" name="name" placeholder="Your name">
  <br>
  <input class="formfill" type="text" name="mailId" placeholder="Your email">
  <br>
  <input id="submit-button" class="formfill sumbit-button" type="submit" value="Submit">
</form>

这是我的 JavaScript 代码,也尝试过使用 AJAX:

$(function() {
  $("#submit-button").submit(function(e) {
    e.preventDefault();
    return false;
  })
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form action="/formfill" method="POST" , enctype="application/x-www-form-urlencoded">
  <input class="formfill" type="text" name="name" placeholder="Your name">
  <br>
  <input class="formfill" type="text" name="mailId" placeholder="Your email">
  <br>
  <input id="submit-button" class="formfill sumbit-button" type="submit" value="Submit">
</form>

使用 AJAX:-

$(function() {
  $("#submit-button").submit(function(e) {
    e.preventDefault();
    var formData = new FormData($(this));
    $.ajax({
      url: '/formfill',
      type: 'POST',
      data: formData,
      async: false,
      cache: false,
      contentType: false,
      processData: false,
      success: function(response) {
        console.log(response);
      }
    });
  })
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form action="/formfill" method="POST" , enctype="application/x-www-form-urlencoded">
  <input class="formfill" type="text" name="name" placeholder="Your name">
  <br>
  <input class="formfill" type="text" name="mailId" placeholder="Your email">
  <br>
  <input id="submit-button" class="formfill sumbit-button" type="submit" value="Submit">
</form>

我想做的就是提交表单,而不被重定向到 /formfill 或刷新页面。

最佳答案

$("#submit-button").submit(function(e) { 替换为 $("#submit-button").closest("form").submit(function(e) { :-)

preventDefault 方法似乎有效:

function customSubmit () {
  $("#on-btn").attr("disabled", "disabled");
  $("#off-btn").removeAttr("disabled");
  $("form").on("submit", function (ev) {
    ev.preventDefault();
    console.log($(this).serialize());
  });
}
function defaultSubmit () {
  $("#off-btn").attr("disabled", "disabled");
  $("#on-btn").removeAttr("disabled");
  $("form").off("submit");
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p>
  <button id="on-btn" type="button" onclick="customSubmit()">Custom submit</button>
  <button id="off-btn" type="button" onclick="defaultSubmit()" disabled>Default submit</button>
</p>
<form action="" method="POST">
  <input type="text" name="dummy" value="dummy">
  <input type="submit" name="submit">
</form>

关于javascript - 提交表单而不重定向到其他页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48595589/

相关文章:

javascript - 在 javascript 中,如何从同一类中的另一个方法调用类方法?

javascript - 如何在没有canvas的情况下在html中手动绘制矩形?

html - 在以下出现相同工具提示图像的情况下,如何在悬停时显示不同的工具提示图像?

javascript - 是否有任何东西可以使用 html5/javascript 来防止在多个浏览器实例中打开同一个网络应用程序?

javascript - 在 HTML5 中缓存 MP3 以便离线收听?

javascript - 如何过滤存储在 jQuery 变量中的数据

javascript - 1980 年前和 1980 年后的 RegEx Vin 验证

javascript - 如何计算请求所花费的时间?

javascript - 在页面加载时执行

javascript - 如何多次更换?