Javascript 在Node.js Express中发布和重定向

Javascript 在Node.js Express中发布和重定向,javascript,html,node.js,express,Javascript,Html,Node.js,Express,首先,我要说我是Node.js中的新手。我在这里读了很多与我的问题相关的帖子,但它们要么对我不起作用,要么我不理解解决方案。Nodes.js目前对我来说相当棘手:/ 以下是我的问题: 我正在试图弄清楚POST处理和重定向过程,我想我遗漏了一些东西,因为它不能正常工作 我正在编写一个单页应用程序,因此所有页面实际上都是一个页面,分为多个部分 假设我有这样一个HTML表单(在登录部分): 现在,基本上,除了阅读表单的内容,我什么都不想做,还有 将用户重定向到另一个页面。我在终端中看到表单数据被正确解

首先,我要说我是Node.js中的新手。我在这里读了很多与我的问题相关的帖子,但它们要么对我不起作用,要么我不理解解决方案。Nodes.js目前对我来说相当棘手:/

以下是我的问题:

我正在试图弄清楚POST处理和重定向过程,我想我遗漏了一些东西,因为它不能正常工作

我正在编写一个单页应用程序,因此所有页面实际上都是一个页面,分为多个部分

假设我有这样一个HTML表单(在登录部分):

现在,基本上,除了阅读表单的内容,我什么都不想做,还有 将用户重定向到另一个页面。我在终端中看到表单数据被正确解析,它打印用户名和密码,但地址不是重定向到页面的#index部分,而是更改为localhost/login

有人能告诉我们接收帖子、提取数据和重定向用户的整个过程吗


谢谢

我只是复制并粘贴了你的代码,一切都很顺利

基本上,您接收和处理POST数据的方式就是您这样做的方式。js(与bodyParser结合使用)省去了大量工作,因此您可以简单地访问数据

此外,重定向的工作方式与您的工作方式完全相同。只有一件事:进程重定向涉及一个状态代码(302)。这意味着一开始将状态代码设置为200是毫无意义的,因为它会被
.redirect(url)
调用覆盖


希望它能帮助您实现这一点,您需要使用客户端javascript和ajax。您可以使用jquery的post方法手动提交表单,而不必依赖于的action属性 大概是这样的:

$('#myForm').submit(function(event) {
    event.preventDefault(); // Stops browser navigationg

    var dataObject;
    // build a json object, store in information to dataObject

    $.post('/login', dataObject, function(res) {
        consolel.log(res);
        // on success execute this code
    });
});
更新:

或者,如果您或此处的任何其他人也愿意进行文件上载,则您可以使用以下代码:

 $("#myForm").submit(function(event){    
 event.preventDefault();

 var formData = new FormData($(this)); 

     $.ajax({
       url: 'login',
       type: 'POST',
       data: formData,
       async: false,
       cache: false,
       contentType: false,
       enctype: 'multipart/form-data',
       processData: false,
       success: function (response) {
           console.log(response);
       }
    });

   return false;
 });
解释


在表单的提交事件上,停止默认操作。然后我们创建一个新的formData并传递表单的这个。使用url、请求方法等参数传递ajax请求。

谢谢回复!实际上,我希望它重定向到地址:127.0.0.1:8888/index.html#index,但我被重定向到地址:127.0.0.1:8888/login,这是我的问题(因为它不存在)。当您运行它时,您会被重定向到第一个地址?我会被重定向到localhost/index.html#login猜测:控制台中有错误吗?错误可能会阻止node.js访问重定向。没有错误。我不知道如何让它将我重定向到网站的那个部分。你在用浏览器测试吗?因为当您使用命令行工具或测试套件进行测试时,它们通常不尊重重定向,并且可能会给您错误的响应。如果您愿意,可以将代码作为zip发送给我(请参阅我的个人资料以获取电子邮件),我会尝试查看问题发生的位置,因为它肯定不在您发布的代码中。
“#myForm”
字段具体是什么?@Nxt3#myForm是您表单的id。
$('#myForm').submit(function(event) {
    event.preventDefault(); // Stops browser navigationg

    var dataObject;
    // build a json object, store in information to dataObject

    $.post('/login', dataObject, function(res) {
        consolel.log(res);
        // on success execute this code
    });
});
 $("#myForm").submit(function(event){    
 event.preventDefault();

 var formData = new FormData($(this)); 

     $.ajax({
       url: 'login',
       type: 'POST',
       data: formData,
       async: false,
       cache: false,
       contentType: false,
       enctype: 'multipart/form-data',
       processData: false,
       success: function (response) {
           console.log(response);
       }
    });

   return false;
 });