【问题标题】:How to fix 404 error Node JS Express POST Request如何修复 404 错误 Node JS Express POST 请求
【发布时间】:2020-08-27 01:03:43
【问题描述】:

我正在尝试将以下 html 表单提交到 js 文件:

                        <form action="/submit-form" method="POST">


                             <input type="text" name="username">

                             <button> Click Here Now </button>


                        </form>

这是我要提交到的文件。我试过移动文件夹,更改端口,但似乎没有任何效果。

          var express = require('express');

          var app = express();
          
          app.listen(80, function(){ 

           console.log("Hello whatsup");

         })
         app.post('/submit-form', function(req,response){

              console.log("All great");
    
          })

这两个文件都在我的 Xampp htdocs 文件夹中,特别是位于包含为这个特定项目制作的文件夹中。它包含 package.json 文件、node_modules 文件夹、js 文件和 html 表单。

【问题讨论】:

  • “提交到文件”是什么意思?你把html文件放在哪里了?你把js文件放在哪里了?这一切都在哪里运行?你是如何启动 nodejs 服务器的?
  • 我有 html 文件和 js 文件,我想在我的 htdocs 本地服务器文件夹中接收发布请求。我用 nodemon 在我的 windows 命令行上运行 js 文件。提交是指将 html 表单中的信息发送到 JS 文件以进行处理。
  • 您在说什么“htdocs 本地服务器文件夹”?除了 nodejs 应用程序之外,您还有其他网络服务器在运行吗?以及如何(在哪个 url 下)在浏览器中加载页面)?
  • HTML sn-p 是否托管在同一个 Node 服务器上?
  • 对不起。我现在会尝试在主帖中澄清所有这些细节。

标签: javascript forms express post


【解决方案1】:

如果您只是在本地运行表单而没有任何托管/渲染,那么您需要指定它的 url 以了解如何访问您的本地服务器。

示例 1:

使用您的代码示例,但稍作修改以使用非相对路径

假设您在您的机器中创建了一个文件index.html,并根据上面的示例使用以下内容通过浏览器打开它

<form action="http://localhost:8080/submit-form" method="POST">
  <input type="text" name="username">
  <button> Click Here Now </button>
</form>

以上假设您的服务器设置如下,端口为 8080。我所做的只是修改代码中的端口

假设您有一个以 node server.js 开头的 server.js 文件。注意:这假设您的 node_modules 中已经有 express

      var express = require('express');

      var app = express();
      
      app.listen(8080, function(){ 

       console.log("Hello whatsup");

      })
      app.post('/submit-form', function(req,response){
          console.log("All great");

      })

示例 2:

使用您的代码示例解释相对路径

如果您将服务器和客户端都托管在同一台服务器上,那么用于 index.html 的 url 与用于服务器的 url 相同。然后你可以使用你拥有的相对路径

<form action="/submit-form" method="POST">
  <input type="text" name="username">
  <button> Click Here Now </button>
</form>

因为这将寻找您正在渲染的域。假设您正在渲染并最终得到一个域 http://awesomeurl.com,然后当您的表单点击 /submit-form 时,它将使用 POST 请求调用 http://awesomeurl.com/submit-form。如果您的服务器也托管并使用相同的 url 公开,那么一切正常。

【讨论】:

  • 感谢您的彻底回复。不幸的是,它一直对我失败。我有一个 js 文件,我想在其中处理表单和表单本身作为姐妹文件(或在同一文件夹级别上并行处理)。我尝试过使用相对路径和绝对路径,由于某种原因,它恰好可以在我的 mac 上运行,但在我的 windows 计算机上却不行。
  • 好的,我刚刚看到您更新为使用 Xampp 作为您的服务器来提供 html。 Xampp 和 express 服务器是两个不同的东西。 Xampp 将在一个端口中提供您的 html 代码,而 express 将在另一个端口中提供它,具体取决于您的设置。所以在这种情况下我会使用非相对路径。至于为什么在windows下不行,不看日志就有点难知道了。最好在浏览器控制台中查看您的开发人员工具,以确定在 windows 和 mac 中运行时遇到的端点和路径,然后从那里开始。
  • 能否以快递方式提供html表单?
  • 你可以,但我建议要么使用像 ejs 这样的模板设置来渲染。这是一个教程,将向您展示如何发送 html 文件进行测试,还提到了如何在 express codeforgeek.com/render-html-file-expressjs 中呈现模板文件
  • 我终于能够通过关闭 Xampp 服务器并仅使用 Express 来修复它!非常感谢您的帮助!
猜你喜欢
  • 2019-07-23
  • 2020-05-22
  • 2021-04-23
  • 1970-01-01
  • 2019-11-04
  • 2019-02-07
  • 2022-11-07
  • 2021-10-24
  • 2015-07-05
相关资源
最近更新 更多