Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用Express和Node.js从表单发送参数_Javascript_Html_Node.js_Express_Server - Fatal编程技术网

Javascript 如何使用Express和Node.js从表单发送参数

Javascript 如何使用Express和Node.js从表单发送参数,javascript,html,node.js,express,server,Javascript,Html,Node.js,Express,Server,对不起英语,我是巴西人,我不知道如何写得很好 我正在尝试使用Express以邮寄方式发送表单数据: index.html <form action="insert" method="post"> <p><h4> Title </h4> <input type="text" name="title" id="title" size="40" maxlength="30" placeholder="Name of ta

对不起英语,我是巴西人,我不知道如何写得很好

我正在尝试使用Express以邮寄方式发送表单数据:

index.html

<form action="insert" method="post">
            <p><h4> Title </h4>   <input type="text" name="title" id="title" size="40" maxlength="30" placeholder="Name of task"/> </p> 

            <p><h4>Description</h4> <textarea name="description" id="description" cols="50" rows="3" placeholder="description of task"></textarea> </p> 

            <p> 
                <h4>Grade</h4>
                <input type="radio" name="urgency" value="2"> 2
                <input type="radio" name="urgency" value="1" checked> 1
                <input type="radio" name="urgency" value="0"> 0
            </p>

            <p> 
                <h4>How?</h4>
                <select name="taskType" id="select"> 
                    <option value="2"> N* </option> 
                    <option value="1"> Hour </option> 
                    <option value="0"> Minute </option> 
                </select>
                <input type="text" name="repeats" id="options" size="40" maxlength="5" placeholder="NX?"/> </p> 
            </p>

            <p><button type="submit"> Submit </button></p>
        </form>
我使用mysql存储任务,而且我在端口3306上使用wampp,但是当我提交表单时,我出现了错误:

未找到

在此服务器上找不到请求的URL/MetaSite/public/insert。

本地主机端口80上的Apache/2.4.35(Win64)PHP/7.2.10服务器

index.html位于公用文件夹中,app.js位于src中


有人能帮我吗?我不知道我做错了什么。多谢各位

根据您的代码,index.html似乎不是由javascript服务器托管的。为了让express能够处理来自该文件的post请求,该文件需要由express引用和托管。如果这是您正在做的,并且您只是没有在代码中显示它,请告诉我,否则,这看起来像是您的问题。您应该这样做:

var path = require('path');

app.get('/', function(req, res) {
    res.sendFile(path.join(__dirname + 'public/index.html'));
});

将索引文件寄存于。

您正在发布到apache服务器,而不是express应用程序。此外,操作应该是:
/insert
而不是
MetaSite/public/insert
您的“选择”路线是否有效?它的URL是什么?@MarcosCasagrande的思路是正确的。但是,您的api位于不同的端口上。您需要在您的操作中指定带有端口的完整URL,如前所述,这是不准确的。HTML可以独立于API托管,并且通常位于云部署中。这无疑会使XSRF技术复杂化,但最初发布的文章并没有以任何方式使用它们。是的,只是使用了一个表单操作,而没有提及其他服务器,比如axios,除非html和javascript在同一台服务器上,否则将无法工作。action方法采用完整的URL,完全可以跨域发布。只有在JS(比如axios)中发布时,您可能会遇到问题(由于跨源策略),正确的,这个程序能够做到这一点,但它正在使用它吗?不,它没有提到另一个服务器,它所做的只是使用一个表单操作。前端没有提到另一台服务器。因此,它试图创建一个post请求到它已经在的服务器,并且不与服务器javascript.Correct共享。我只是不想说,“您必须在express中托管html”。您可以在express中托管html,它将解决这个问题。您也可以简单地更改动作的形式。如果在单独的应用程序中托管静态HTML是一种有意的选择(就像我在AmazonS3部署中所做的那样),那么表单操作可以指向另一个域和/或端口。
var path = require('path');

app.get('/', function(req, res) {
    res.sendFile(path.join(__dirname + 'public/index.html'));
});