【发布时间】:2018-07-13 17:11:52
【问题描述】:
我一直在尝试制作一个在线 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 或刷新页面。
【问题讨论】:
-
简答:做一个 AJAX 请求。
-
是的,我一直想这样做,在每个这样的帖子上都说执行 ajax。但它不起作用,它仍然被重定向到 '/formfill' 并显示在 json 中的表单数据
-
如果共识是使用 AJAX 并且它不起作用,那么您为什么没有将它包含在 this 问题中?我们在这里帮助您自助!
-
是的,我错了,正在编辑帖子。
-
submit处理程序应该在表单上,而不是提交按钮上。
标签: javascript jquery html node.js forms