javascript - node.js:如何区分服务器端的两种形式?

标签 javascript node.js forms form-submit

我的 html 页面上有两个表单:

<form id="enterForm" action="/" enctype="multipart/form-data" method="post">
    <fieldset>
        <textarea id="queries" name="queries"></textarea><br />
        <input type="submit" value="submit" />
    </fieldset>
</form>
<form id="uploadForm" action="/upload" enctype="multipart/form-data" method="post">
    <fieldset>
        <input type="file" name="upload"><br />
        <input type="submit" value="Upload">
    </fieldset>
</form>

在服务器端,我必须根据按下哪个表单的提交按钮来调用相应的函数。

目前,我正在这样做:

var server = http.createServer(function (req, res) {
    if (req.url == '/upload' && req.method.toLowerCase() == 'post') {
        processFile(req, res);
    }
    else if (req.method.toLowerCase() == 'post') {
        processField(req, res);
    }
}

我的问题是,服务器是否有其他方法可以找出按下了哪个表单的提交按钮?理想情况下,我希望两种表单的 URL 保持相同。

最佳答案

您可以在每个表单上有一个隐藏的表单字段。

<form id="enterForm" action="/" enctype="multipart/form-data" method="post">
<fieldset>
    <textarea id="queries" name="queries"></textarea><br />
    <input type="hidden" name="formInstance" value="form1" />
    <input type="submit" value="submit" />
</fieldset>
</form>
<form id="uploadForm" action="/" enctype="multipart/form-data" method="post">
<fieldset>
    <input type="file" name="upload"><br />
    <input type="hidden" name="formInstance" value="form2" />
    <input type="submit" value="Upload">
</fieldset>
</form>

然后在服务器上,您可以解析请求正文以查看分配给 formInstance 的值。但是,如果您不使用模块来帮助解析主体,则这需要相当多的代码行。因此,您可能想要使用类似 node-formidable 的模块。然后你可以执行如下操作。

var server = http.createServer(function (req, res) {
    if (req.url == '/' && req.method.toLowerCase() == 'post') {
        var form = new formidable.IncomingForm();
        form.parse(req, function(err, fields, files) {
            if(fields.formInstance == 'form1') {
                processField(req, res); 
            }
            else if(fields.formInstance == 'form2') {
                processFile(req, res);
            }
        }
    }
}

关于javascript - node.js:如何区分服务器端的两种形式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34754989/

相关文章:

javascript - 使用 JavaScript 将 HTML(具有 Javascript)转换为 PDF

javascript - Angular TypeScript JavaScript 词典范围在第三方 API 事件处理程序的嵌套函数中丢失

javascript - 通过 node.js 中的多个字段对 JSON 进行分组

javascript - 在 jQuery 中使用单选按钮切换类

forms - 提交表单时将数据保存到 localStorage

Javascript 2010 年 11 月 30 日加上 3 个月等于 2011 年 3 月 2 日

javascript - 当我执行以下操作时,发生无法读取属性 'length' 错误

javascript - 如何比较两个数组,删除第一个数组中第二个数组中缺少的元素并推送差异

node.js - Spotify API Web : OAuth without Node. js

css - 提交表单时图像消失