在NodeJS中的respone.send之后停止显示JSON结果

时间:2018-06-06 01:29:32

标签: javascript node.js express ejs

我在nodejs应用程序中有一个respone.send:

this.app.post('/profile', (req, res) => {                        
            let password = req.body.password;            
            let newWallet = operator.createWalletFromPassword(password);
            let projectedWallet = projectWallet(newWallet);
            return res.send(projectedWallet);          
});

每当我在html中按下按钮时,它总是会发布我的帖子并在html页面中返回JSON结果。

{"id":"f4c02f2463c8f83218f324d4193e08b8812fe914e24063217d29e65966abbe85","addresses":[]}

但我不想看到它,那么如何隐藏或重定向到另一个页面(例如我之前设置的' / profile')

编辑:这是我的客户端代码

<form action="/profile" method="post">
                        <p>
                            <% var ten = user.username %>
                            <strong>id</strong>: <%= user.id %><br>
                            <strong>username</strong>: <%= ten %><br>
                            <strong>password</strong>: <%= user.password %>
                        </p>
                        <p id="passwd" name="passwd" ><%= user.username %></p>
                        <textarea id="myTextArea" cols=50 rows=10></textarea>
                        <!-- these fields will be sent to server -->
                        <input type="hidden" name="username" value="<%= user.username %>">
                        <input type="hidden" name="password" value="<%= user.password %>">

                        <button type="submit" class="btn btn-warning btn-lg" onclick="/profile">Wallet</button>
                    </form>

1 个答案:

答案 0 :(得分:0)

问题是您正在从浏览器到节点进行POST。浏览器将显示此POST的结果。

如果您不想查看JSON数据,请更改:

return res.send(projectedWallet);          

类似于:

res.redirect('new url');

或:

res.render('some page');

或:

res.send('I hate json! ;)');

如果你真的想要JSON,我建议改为:

return res.send(projectedWallet);

为:

res.json(projectedWallet);

因为它设置了所有正确的标头并正确地对JSON输出进行了字符串化。

<强>更新

如果要创建一个将发布值的表单,然后将JSON放入文本区域,正如您在对此答案的注释中所述,那么您需要使用客户端Java脚本和AJAX调用。 / p>

有关详细信息,请参阅https://stackoverflow.com/a/46642899/1253074