后端返回的HTML代码字符串怎么能自动渲染到前端页面

发布于 2022-09-07 22:22:07 字数 729 浏览 17 评论 0

前台用 form 表单的形式提交数据,后台通过 res.render(用的ejs) 可以正常渲染前端的页面,后台代码如下:

router.post('/classifyadd', (req, res) => {
    let {classifyname} = req.body;
    Classify.create({
        name: classifyname
    }).then(doc => {
        responseData.msg = doc.name;
        
        res.render('admin/frame', {
            page: 'successtip'
        });
    });
});

问题是:当我用 ajax 的形式提交数据,后台同样的写法,前端却不能渲染,我看了响应头也确实是 Content-Type: text/html; charset=utf-8

我知道前端拿到数据后可以通过 innerHTML 的形式塞进页面,但不确定这是不是一个正确的方法?

还是用 AJAX 请求时,后端就不能直接渲染(res.render),只能返回数据,前端拿到数据后再操作DOM,还有其他方法吗?

同样的问题链接,还没有一个好的方案。谢谢各位!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

很快妥协 2022-09-14 22:22:07

应该只返回纯数据,前端再渲染成 HTML。直接 innerHTML 有可能导致 XSS 攻击。

笑脸一如从前 2022-09-14 22:22:07

你这前一句说innerHTML不是正确的方式,后一句又要操作DOM,过去的数据塞进DOM树。

悟: 你该不会是甲方吧!

无人问我粥可暖 2022-09-14 22:22:07

这里纠正你一下,html形式的其实是是当初为了返回XML格式的数据。本来ajax就是为了异步交互,返回轻量数据,自己渲染。你直接怼个页面回来。那你还要啥ajax。直接表单提交岂不美滋滋。

当然,不是说你这样做不可以。你就说你再后端组好了,直接过来了。也行。方案就是innerHTML写进去。

如果你是不明白怎么交互,可以参考一下我自己的文章 简单的前后端交互流程(AJAX)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文