无法读取Javascript中的文本文件

无法读取Javascript中的文本文件,javascript,Javascript,我在location/home/myname/Desktop/iot/public/sensordata.txt中有一个本地文本文件。当在网页上单击按钮时,必须用JavaScript读取此文件。我的代码如下: <html> <head> <title>Humidity</title> </head> <body> <h3>Humidity page</

我在location/home/myname/Desktop/iot/public/sensordata.txt中有一个本地文本文件。当在网页上单击按钮时,必须用JavaScript读取此文件。我的代码如下:

<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();

您可能会在控制台中收到警告/错误,表示不允许您查看该文件。不,我没有收到任何此类警告/错误。