【问题标题】:node email form success message节点电子邮件表单成功消息
【发布时间】:2015-07-09 03:15:54
【问题描述】:

如果电子邮件发送成功,我想显示成功消息。我有一个带有文件的 html 表单发布到服务器。有没有办法可以将数据从服务器发送到客户端?我会使用 express 或 ajax 来处理表单提交,但我无法让其中任何一个与文件上传一起工作 - 我可以让我的文件上传的唯一方法是通过 html 表单。

客户

<form enctype="multipart/form-data" action="/email" method="post">
     <input type="text" name="name" class="form-control" id="name">
     <!--code below uploads file -->
     <input type="file" 
            style="visibility:hidden; width: 1px;" 
            id='${multipartFilePath}' class="res" name='userFile' onchange="$(this).parent().find('span').html($(this).val().replace('C:\\fakepath\\', ''))"  /> <!-- Chrome security returns 'C:\fakepath\'  -->
    <input class="btn btn-default btn-file" type="button" value="Attach File" onclick="$(this).parent().find('input[type=file]').click();"/>
    <button type="submit" class="btn btn-xl">Send Message</button>
</form>

服务器

app.post('/email', function(req, res) {
    var toSend = req.files;
    res.status(204).end()
    sendEmail(req.body, toSend);//email is sent successfully
    /***Here I want to send data back to client with either a success or error message text***/
    res.send('help');
});

基本上,考虑到我使用 html 表单发送我的 post 请求,我需要帮助确定在客户端接受 res.send 的位置。电子邮件正在正确发送,但我不知道在这种情况下如何将文本字符串返回给客户端。

【问题讨论】:

    标签: javascript ajax node.js post express


    【解决方案1】:

    问题是您发送status().end(),然后以res.send('help') 结束函数。您不能在res 上执行函数end(),然后再尝试发送另一个响应。

    【讨论】:

    • 我会在哪里收到客户端的响应?
    • 如果您使用传统的表单帖子,它将用户重定向到另一个 url(就像您在代码中所做的那样),那么您可以将消息添加为 url 参数并从文档中读取它。 location.search 通过 javascript。如果您使用的是纯 AJAX,则可以发送 res.json({reply: xxx}) 命令并将响应传递给客户端。
    猜你喜欢
    • 2014-04-12
    • 1970-01-01
    • 2015-06-18
    • 1970-01-01
    • 2021-02-06
    • 2015-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多