微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

XHR 内更新的文档元素为空

如何解决XHR 内更新的文档元素为空

我在 p5.js 绘制函数中有这段代码(我放置了 noLoop,所以我不会被错误溢出),当我运行它时,在它从 DOM 元素读取的部分,我得到一个JSON 错误。当我打印出来时,我得到一个空字符串。但是当我检查元素时,该元素中有文本。我该如何解决代码如下。注意:由于一个错误,我不得不以这种非常笨拙的方式做事。

var xhr = new XMLHttpRequest();
xhr.onreadystatechange=function(){
    document.getElementById("players").innerHTML = xhr.responseText;
}
xhr.open("GET","/rusers",true);
xhr.send();
...
fill(0,255);
dataj = JSON.parse(document.getElementById("players").innerHTML);
for (let d of dataj){
    circle(d.x,d.y);
}
noLoop();

解决方法

您无需等待 Ajax 调用完成,您只需假设它在代码的下一部分运行时就已存在。您也不会检查以确保 XMLHttpRequest 已完成加载。

基本思路:

const xhr = new XMLHttpRequest();

xhr.open("GET","/rusers",true);
xhr.onreadystatechange = function () {
  if(xhr.readyState === XMLHttpRequest.DONE) {
    var status = xhr.status;
    if (status >= 200 && status < 400) {
      // The request has been completed successfully
      document.getElementById("players").innerHTML = xhr.responseText;
      // Your logic here
      fill(0,255);
      const dataj = JSON.parse(document.getElementById("players").innerHTML);
      for (let d of dataj){
        circle(d.x,d.y);
      }
      noLoop();
    } else {
      alert('error');
    }
  }
};
xhr.send();

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。