Javascript-从esp8266 SPIFFS中读取Json

时间:2018-07-08 12:53:23

标签: javascript jquery json esp8266 spiffs

起初我想说我在Javascript / jQuery方面的经验为零,并且我知道我的问题的解决方案实际上可能非常简单。

我想用ESP8266制作一个WiFi扫描器,以在Page的表格中显示SSID。到目前为止,下面的代码仍然有效,但是延迟非常混乱。我应该能够在while循环中检查json文件是否已实际填充,如果是,请读取并显示ssid。

var foot = '<tr style="height:63px;"><td>Selected WiFi: ... &nbsp;Password:&nbsp;<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: ... &nbsp;Password:&nbsp;<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) {}
}

2 个答案:

答案 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。