Javascript 从按钮单击的Get方法获取对象列表,并插入到html页面表中
获取汽车列表的方法:Javascript 从按钮单击的Get方法获取对象列表,并插入到html页面表中,javascript,express,server,single-page-application,Javascript,Express,Server,Single Page Application,获取汽车列表的方法: const express = require('express') const app = express() app.use(express.static('public')) app.get('/cars', (req, res) => { res.status(200).json([{ name : 'a', color : 'red' },{ name : 'b', c
const express = require('express')
const app = express()
app.use(express.static('public'))
app.get('/cars', (req, res) => {
res.status(200).json([{
name : 'a',
color : 'red'
},{
name : 'b',
color : 'blue'
}])
})
module.exports = app
我正在尝试将列表加载到我的html页面=>
当点击带有load
id的按钮时,服务器上的cars
列表被请求;带有红色
颜色的车辆将加载到带有main
id的表中,并带有tr
每辆车
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>A simple app</title>
<script>
async function load(){
try{
let url ='http://localhost:8080/cars'
let response = await fetch(url)
let data = await response.json()
let table = document.getElementById('main')
table.innerHTML = ''
for (let e of data){
let rowContent = `
<tr>
<td>
${e.name}
</td>
<td>
${e.color}
</td>
</tr>`
let row = document.createElement('tr')
row.innerHTML = rowContent
//row.dataset.id = e.id
table.append(row)
}
catch(err){
console.warn(err)
}
}
}
</script>
</head>
<body>
A simple app
<table id=main></table>
<input type="button" value="add" onClick={load()} id="load"/>
</body>
</html>
一个简单的应用程序
异步函数加载(){
试一试{
让url为空http://localhost:8080/cars'
let response=等待获取(url)
let data=wait response.json()
let table=document.getElementById('main')
table.innerHTML=“”
for(让e表示数据){
让行内容=`
${e.name}
${e.color}
`
让行=document.createElement('tr')
row.innerHTML=行内容
//row.dataset.id=e.id
表.追加(行)
}
捕捉(错误){
控制台。警告(错误)
}
}
}
一个简单的应用程序
没有什么理由不能这样做,这是因为cors
,catch
阻塞和端口
也许你可以试试下面的html
:
一个简单的应用程序
异步函数加载(){
试一试{
让url为空http://localhost:3000/cars';
let response=等待获取(url);
let data=wait response.json()
let table=document.getElementById('main');
table.innerHTML='';
for(让e表示数据){
让行内容=`
${e.name}
${e.color}
`;
让行=document.createElement('tr')
row.innerHTML=行内容;
表.追加(行);
}
}捕获(ex){
控制台日志(ex);
}
}
一个简单的应用程序
现在,在您的服务器中,您可以使用以下简单的服务器进行更改:
const express=require('express');
常量app=express();
const cors=需要(“cors”);
app.use(cors({origin:'*'}));
应用程序获取('/cars',(请求,res)=>{
res.status(200).json([{
名称:‘a’,
颜色:“红色”
},{
名称:‘b’,
颜色:“蓝色”
}])
});
app.listen(3000,()=>{
log('服务器已启动');
});
我希望它能帮助您。您看到了什么错误?● 本地›点击时应加载错误:未能找到元素匹配选择器“#main tr:first child td:first child”23 |等待页面。点击(#load')24 |等待页面。等待选择器(#main')>25 | const first=wait页面。$eval(#main tr:first child td:first child),e=>e.textContent)首先,如果您想更改onClick={load()}
,那么根据您的本地设置,您可能会遇到cors问题。我想这就是cors问题。现在,我可以在我的页面中添加列表。但是测试仍然没有通过:未能找到元素匹配选择器“#main tr:first child td:first child”“但是测试仍然没有通过”,我不明白你的意思。你能解释一下吗?我对这个练习有自动测试。我想这是另一个话题。您可以创建新问题并询问,为什么可以运行自动测试。例如,请确保提供您的代码。