起初我想说我在Javascript / jQuery方面的经验为零,并且我知道我的问题的解决方案实际上可能非常简单。
我想用ESP8266制作一个WiFi扫描器,以在Page的表格中显示SSID。到目前为止,下面的代码仍然有效,但是延迟非常混乱。我应该能够在while循环中检查json文件是否已实际填充,如果是,请读取并显示ssid。
var foot = '<tr style="height:63px;"><td>Selected WiFi: ... Password: <input id="pw" type="text"><button onClick="connect()" class="btn btn-primary" type="button" style="margin-left:5%;">Connect</button></td></tr>';
var foot_last = '<tr style="height:63px;"><td>Selected WiFi: ... Password: <input id="pw" type="text"><button onClick="connect()" class="btn btn-primary" type="button" style="margin-left:5%;">Connect</button></td></tr>';
//gets called when the scan button is pressed
function scan() {
//Tells the ESP8266 to write the SSIDs in the json file scan.json (takes a while until its done)
$.post("/scan");
//this delay needs to be replaced. The code should only move on if the scan.json is not empty
delay(2000);
//Json gets read and contents displayed
$.getJSON("/scan.json", function(data) {
$.each(data, function(index, value) {
console.log(value);
var tbl_hoe = '<tr onClick="select()" style="height:63px;"><td>' + value + '</td></tr>';
foot = tbl_hoe + foot;
document.getElementById('tab').innerHTML = foot;
});
});
//at this point the json must be emtyed
}
function delay(ms) {
ms += new Date().getTime();
while (new Date() < ms) {}
}
答案 0 :(得分:0)
关于//this delay needs to be replaced. The code should only move on if the scan.json is not empty
如果您查看$.post的文档,将会看到它带有2个参数。第一个是url,第二个是在请求完成后调用的回调。
function scan() {
$.post("/scan", function(data) {
$.getJSON("/scan.json", function(data) {
$.each(data, function(index, value) {
console.log(value);
});
});
});
}
关于://at this point the json must be emtyed
除非您向服务器发出请求,否则您无法从浏览器更改json文件的内容。 (并且服务器必须实现了这样的功能)
答案 1 :(得分:0)
戴夫·牛顿的大型战车。没想到我可以使用ESP8266直接通过http发送数据,而无需在
之间插入json。