在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/HTML/ 后端返回的HTML代碼字符串怎么能自動(dòng)渲染到前端頁(yè)面

后端返回的HTML代碼字符串怎么能自動(dòng)渲染到前端頁(yè)面

前臺(tái)用 form 表單的形式提交數(shù)據(jù),后臺(tái)通過(guò) res.render(用的ejs) 可以正常渲染前端的頁(yè)面,后臺(tái)代碼如下:

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'
        });
    });
});

問(wèn)題是:當(dāng)我用 ajax 的形式提交數(shù)據(jù),后臺(tái)同樣的寫法,前端卻不能渲染,我看了響應(yīng)頭也確實(shí)是 Content-Type: text/html; charset=utf-8

我知道前端拿到數(shù)據(jù)后可以通過(guò) innerHTML 的形式塞進(jìn)頁(yè)面,但不確定這是不是一個(gè)正確的方法?

還是用 AJAX 請(qǐng)求時(shí),后端就不能直接渲染(res.render),只能返回?cái)?shù)據(jù),前端拿到數(shù)據(jù)后再操作DOM,還有其他方法嗎?

同樣的問(wèn)題鏈接,還沒有一個(gè)好的方案。謝謝各位!

回答
編輯回答
獨(dú)特范

你這前一句說(shuō)innerHTML不是正確的方式,后一句又要操作DOM,過(guò)去的數(shù)據(jù)塞進(jìn)DOM樹。

悟: 你該不會(huì)是甲方吧!
2018年3月31日 11:54
編輯回答
掛念你

應(yīng)該只返回純數(shù)據(jù),前端再渲染成 HTML。直接 innerHTML 有可能導(dǎo)致 XSS 攻擊。

2017年2月28日 15:46
編輯回答
萌面人

這里糾正你一下,html形式的其實(shí)是是當(dāng)初為了返回XML格式的數(shù)據(jù)。本來(lái)ajax就是為了異步交互,返回輕量數(shù)據(jù),自己渲染。你直接懟個(gè)頁(yè)面回來(lái)。那你還要啥ajax。直接表單提交豈不美滋滋。

當(dāng)然,不是說(shuō)你這樣做不可以。你就說(shuō)你再后端組好了,直接過(guò)來(lái)了。也行。方案就是innerHTML寫進(jìn)去。

如果你是不明白怎么交互,可以參考一下我自己的文章 簡(jiǎn)單的前后端交互流程(AJAX)

2018年6月15日 06:02