我有一个node.js表达应用程序,它试图发布一个post请求并查询数据库的内容。我正在尝试执行post请求,而不必从表单页面重定向用户或重新加载页面。
index.jade
form.well(id="newEntryForm", method="post", action="/addEntry")
label Key:
br
input(name="key", id="key", class="new-entry", type="textbox")
br
br
label Value:
br
input(name="value", id="value", class="new-entry", type="textbox")
br
br
button.btn(type="submit") Add Entry
app.js
app.post('/addEntry', function(req, res){
//database query
});
这最终会将我重定向到网址localhost:3000/addEntry
。我知道我可以在post方法的回调中添加res.redirect("/");
,但这会重新加载页面。如何在不重新加载页面的情况下完成此操作?
修改
我添加了一个javascript方法来执行提交表单,但最终会在URL栏上附加POST请求参数。我该如何避免这种情况?
Javascript方法
$(function() {
$('#newEntryForm').submit(function() {
var data = {key: 'a', value: 'b'};
// build a json object or do something with the form, store in data
$.post('/addRule', data, function(resp) {
alert(resp);
console.log("post response: " + resp);
// do something when it was successful
});
});
});
答案 0 :(得分:4)
正如评论所说,你需要使用客户端javascript + ajax。
$(function() {
$('#newEntryForm').submit(function(event) {
event.preventDefault(); // Stops browser from navigating away from page
var data;
// build a json object or do something with the form, store in data
$.post('/addEntry', data, function(resp) {
alert(resp);
// do something when it was successful
});
});
});