无法读取Javascript中的文本文件
我在location/home/myname/Desktop/iot/public/sensordata.txt中有一个本地文本文件。当在网页上单击按钮时,必须用JavaScript读取此文件。我的代码如下:无法读取Javascript中的文本文件,javascript,Javascript,我在location/home/myname/Desktop/iot/public/sensordata.txt中有一个本地文本文件。当在网页上单击按钮时,必须用JavaScript读取此文件。我的代码如下: <html> <head> <title>Humidity</title> </head> <body> <h3>Humidity page</
<html>
<head>
<title>Humidity</title>
</head>
<body>
<h3>Humidity page</h3>
<table>
<tr>
<td>
<button type="button" onclick="humidgraph('public/sensordata.txt','chartContainer')">View live humidity data</button>
</td>
</tr>
</table>
<p><div id="chartContainer" style="height: 300px;width= 100%;"></div></p>
<script type="text/javascript">
function humidgraph(datasource,divid){
var i=0;
var xVal,yVal;
var humidity=[],time=[],dps=[];
var fileread=false;
var obj=document.getElementById(divid);
if(window.XMLHttpRequest){
fileread=new XMLHttpRequest();
}else if(window.ActiveXObject){
fileread=new ActiveXObject("Microsoft.XMLHTTP");
}
if(fileread){
fileread.open("GET",datasource);
document.getElementById("chartContainer").innerHTML=fileread.responseText;
}
fileread.onreadystatechange=function(){
if((fileread.readyState===4 || fileread.readyState===0) && fileread.status===200){
var text=fileread.responseText;
text.split(/\n/).forEach(function(item){
humidity.push(Number(item.match(/Humidity(.\d+[.]\d+)/)[1]));
});
text.split(/\n/).forEach(function(item){
time.push(Number(item.match(/time(.\d+[.]\d+)/)[1]));
});
}
}
while(i<time.length){
xVal=time[i];
yVal=humidity[i];
dps.push({x: xVal,y: yVal});
i++;
}
}
</script>
</body>
</html>
湿度
湿度页
查看实时湿度数据
函数humidgraph(数据源,divid){
var i=0;
var xVal,yVal;
变量湿度=[],时间=[],dps=[];
var fileread=false;
var obj=document.getElementById(divid);
if(window.XMLHttpRequest){
fileread=newXMLHttpRequest();
}else if(window.ActiveXObject){
fileread=newActiveXObject(“Microsoft.XMLHTTP”);
}
如果(文件读取){
打开(“获取”,数据源);
document.getElementById(“chartContainer”).innerHTML=fileread.responseText;
}
fileread.onreadystatechange=函数(){
if((fileread.readyState==4 | | fileread.readyState==0)和&fileread.status==200){
var text=fileread.responseText;
text.split(/\n/).forEach(函数(项){
湿度.推送(编号(项目.匹配(/湿度(.\d+[.]\d+/)/)[1]);
});
text.split(/\n/).forEach(函数(项){
time.push(编号(item.match(/time(.\d+[.]\d+/)/)[1]);
});
}
}
而(i您需要运行Web服务器并向该服务器上的URI发出get请求,而不是向文件发出get请求(您会收到“跨源请求”错误)
然后改变:
humidgraph('public/sensordata.txt','chartContainer')
阅读以下内容:
humidgraph('http://localhost/public/sensordata.txt','chartContainer')
初始请求页面也需要从该服务器加载
此外,您还应按照以下顺序执行您的请求:
fileread.onreadystatechange=function (){
...
};
...
fileread.open("GET", datasource);
fileread.send();
您可能会在控制台中收到警告/错误,表示不允许您查看该文件。不,我没有收到任何此类警告/错误。