前面一篇咱们为了适配移动端套餐在Avalonia下简单玩耍了一下WebSocket,今天再次换另一种方式再来实现一下;
1、前端通过Get的方式获取数据:const fetchData = async () => { try { const response = await fetch('http://172.17.87.136:8989/XX/Control/GetAllScreen'); if (!response.ok) { throw new Error('Network response was not ok'); } // 使用 response.json() 方法来解析 JSON 数据 const data = await response.json(); return data.devices; } catch (error) { console.error('Fetch error:', error); return []; }};2、根据数据绘制界面和监听事件:
const loadPanels = async () => { //通过HTTP的方式获取数据 const devices = await fetchData(); const panelContainer = document.getElementById('panelContainer'); devices.forEach(device => { const panel = createPanel(device); panelContainer.appendChild(panel); // 为每个面板添加点击事件监听器 panel.addEventListener('click', function(event) { if (event.target.closest('.panel-header')) { this.classList.toggle('expanded'); document.querySelectorAll('.panel') .forEach(p => { if (p !== this) { p.classList.remove('expanded'); } }); } }); });};3、关于模拟返回数据的后端服务:
var response = new HttpResponse(); if(request.Method == "GET") { string data = "{\"devices\":[{\"id\":1,\"name\":\"1楼大屏\"},{\"id\":2,\"name\":\"2楼大屏\"},{\"id\":3,\"name\":\"3楼大屏\"}]}"; response.SetBody(data); SendResponseAsync(response); }4、结果前端出现:


