我的後端
輸出 兩個div
back.php
<?php
echo "<div>aaa</div>";
echo "<div>bbb</div>";
?>
我的前端要去抓兩個div 然後用 doucment.write 插入DOM
<script type="text/javascript">
async function get(){
//get請求
let data = await fetch("./back.php");
data = await data.text();
//印出 <div>aaa</div><div>bbb</div>
console.log(data);
//印出 string
console.log(typeof(data));
//回傳 data 為一個 string
return data;
}
data = get();
// 這行顯示是一個[object Promise]
document.write(data);
</script>
我在函數返回的 return data是 string
但我 document.write(data) 它又變promise 所以失敗
我想問我要如何把它單純類似已下效果
document.write("<h2>Hello World!</h2><p>Have a nice day!</p>");
另外一個問題:
基本上我的後端就想這樣輸出,我想問我這樣取 html tag 的思路是各位常用的嗎,還是有其他更好方法 ?
謝謝。
<?php
echo "<div id='a'>aaa</div>";
echo "<div id='b'>bbb</div>";
?>
<script type="text/javascript">
const a = document.getElementById('a')
async function get(){
//get請求
let data = await fetch("./back.php");
data = await data.text();
//印出 <div>aaa</div><div>bbb</div>
console.log(data);
//印出 string
console.log(typeof(data));
//回傳 data 為一個 string
return data;
}
get.then((data)=>{
// 這會有資安隱憂,慎用,尤其是如果你資料是從資料庫取出來的話
a.after(data)
})
</script>
個人建議, 後端主要傳資料給前端就好, 盡可能不要連 html 都帶到回傳
<script type="text/javascript">
async function get(){
// get請求
var fetch = await fetch("./back.php");
return await data.text();
}
data = await get();
document.body.innerHTML = data;
<script>
<script type="text/javascript">
fetch("./back.php")
.then(function(data) => {
document.body.innerHTML = data;
})
.catch(function(error) => {
console.error(error);
});
<script>