我正在用arduino做一个项目,在其中我使用方法XMLHttprequest和Get从网页向服务器(arduino板)发送不同的请求。除了其中一个请求,其他请求仅用于向服务器发送订单,因此我不期望XML响应。另一个是以5秒为间隔发送的请求,用于从服务器获取不同的值。
问题到了最后一个问题。实际上网页每5秒发送一次请求(因为我在浏览器控制台和arduino串口监视器上看到它),但它没有得到任何结果,只是回答的标题确认了响应,但没有关于XML文件。令人惊讶的是,当我在浏览器中使用get方法编写正常请求时,我立即获得带有值的XML文件,并且它一直在我这样做。
我打算在网页上编写我正在使用的javascript代码
setInterval(function tiempo()
{
var request = new XMLHttpRequest();
request.onreadystatechange = function()
{
if (this.readyState == 4) {
if (this.status == 200) {
if (this.responseXML != null) {
// extract XML data from XML file (containing switch states and analog value)
document.getElementById("input1").innerHTML = this.responseXML.getElementsByTagName('dato')[0].childNodes[0].nodeValue;
document.getElementById("input2").innerHTML = this.responseXML.getElementsByTagName('dato')[1].childNodes[0].nodeValue;
document.getElementById("input3").innerHTML = this.responseXML.getElementsByTagName('dato')[2].childNodes[0].nodeValue;
document.getElementById("input4").innerHTML = this.responseXML.getElementsByTagName('dato')[3].childNodes[0].nodeValue;
document.getElementById("input5").innerHTML = this.responseXML.getElementsByTagName('dato')[4].childNodes[0].nodeValue;
document.getElementById("input6").innerHTML = this.responseXML.getElementsByTagName('dato')[5].childNodes[0].nodeValue;
document.getElementById("input7").innerHTML = this.responseXML.getElementsByTagName('dato')[6].childNodes[0].nodeValue;
}
}
}
}
request.open("GET", "URL" + Math.random(), true);
request.send(null);
}
, 5000);
另一方面,如果我只在浏览器URL
中编写,我会毫无问题地获得XML。
我不得不说的是,现在我正在使用存储在我的计算机中的网页,但之前我使用的是存储在arduino(在SD卡上)的网页,并且还通过互联网从arduino加载。在这种情况下相同的代码完美地工作。我改变的原因是因为arduino以太网不是太快而且需要花费很多时间。随着网页存储在我的电脑中它变得更快,因为它只需要发送订单。
谢谢!
答案 0 :(得分:0)
最后,我想出了问题所在。这是浏览器。出于任何原因,只有Internet Explorer可以正常使用该网页。 Firefox和其他Web浏览器都没有获取xml文件。我不知道原因,但我想找到它。
如果有人知道某事,我会很乐意尝试解决问题。
谢谢!