Javascript node.js/express在不从当前页面重定向的情况下发出post请求

Javascript node.js/express在不从当前页面重定向的情况下发出post请求,javascript,jquery,node.js,post,express,Javascript,Jquery,Node.js,Post,Express,我有一个node.js express应用程序,它试图发出post请求并查询数据库的内容。我正在尝试执行post请求,而不必从表单页面重定向用户或重新加载页面 翡翠索引 form.well(id="newEntryForm", method="post", action="/addEntry") label Key: br input(name="key", id="key", class="new-entry", type="textbox") br b

我有一个node.js express应用程序,它试图发出post请求并查询数据库的内容。我正在尝试执行post请求,而不必从表单页面重定向用户或重新加载页面

翡翠索引

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
});
这会将我重定向到URL
localhost:3000/addEntry
。我知道我可以添加
res.redirect(“/”)
在post方法的回调中,但这将重新加载页面。如何在不重新加载页面的情况下完成此操作

编辑

我添加了一个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
        });
    });
});

正如评论所说,您需要使用客户端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
        });
    });
});

你需要使用客户端Javascript和AJAX。我试过这么做。我在提交表单时执行javascript方法时遇到了一些问题,而且当我确实让表单提交时,post请求信息被附加到URL中。你能举个例子吗?我如何获得该职位的数据?有没有办法将值作为JSON对象获取?我尝试了这个方法,现在我的url包含POST请求的参数。我已将我的更改添加到问题中。它是否可以保留在索引页中?只需执行类似于
var data={key:$('#key').value(),…}