【问题标题】:read 2 text files with javascript用 javascript 读取 2 个文本文件
【发布时间】:2011-11-19 22:49:42
【问题描述】:

我无法让 javascript 使用常规脚本或查询加载 2 个文本文件,我需要帮助,请给予和回答?

这里有 jquery,

<script type="text/javascript">
setTimeout(function(){
   window.location.reload(1);
}, 1000);
</script>
<script language="javascript" src="file:///Users/trevor/Desktop/jquery.js" ></script>
<script type="text/javascript">
jQuery.get('file:///Users/trevor/Desktop/x.txt', function(data) {
    document.getElementById('xp').innerHTML = data;
});
</script>
<script type="text/javascript">
jQuery.get('file:///Users/trevor/Desktop/y.txt', function(data) {
    document.getElementById('xp').innerHTML = data;
});
</script>
<p id="xp">hi</p>
<br>
<p id="yp">hi</p>

没有,

<script type="text/javascript">
var client = new XMLHttpRequest();
client.open('GET', 'file:///Users/trevor/Desktop/x.txt');
client.onreadystatechange = function() {
  document.getElementById('xp').innerHTML = client.responseText;
}
client.send();
</script>
<script type="text/javascript">
var client = new XMLHttpRequest();
client.open('GET', 'file:///Users/trevor/Desktop/y.txt');
client.onreadystatechange = function() {
  document.getElementById('yp').innerHTML = client.responseText;
}
client.send();
</script>

可能……

<script type="text/javascript">
var x = document.getElementById('x').contentWindow.getElementById('xp').innerHTML

var y = document.getElementById('y').contentWindow.getElementById('yp').innerHTML

function updatex(){document.getElementById(xp).innerHTML = x}

function updatey(){document.getElementById(yp).innerHTML = y}

setInterval( "updatex(); document.getElementById('x').contentWindow.location.reload();", 1000 );

setInterval( "updatey(); document.getElementById('y').contentWindow.location.reload();", 1000 );


</script>
<p id="xp">hi</p>
<br>
<p id="yp">hi</p>

<iframe id="x" src="file:///Users/trevor/Desktop/x.txt"></iframe>

<iframe id="y" src="file:///Users/trevor/Desktop/y.txt"></iframe>  

【问题讨论】:

  • 你在localhost而不是file协议上试过这个吗?后者可能有点好笑。
  • 现代浏览器在读取文件时存在安全问题。运行本地 Apache 服务器或 IIS,这样您就不会遇到这些问题。

标签: javascript file jquery text stream


【解决方案1】:

您可以使用setInterval 定期加载文件。这里有一点重构:

function loadFile(url, elementId){
    var client = new XMLHttpRequest();
    client.open('GET', url);
    client.onreadystatechange = function() {
      document.getElementById(elementId).innerHTML = client.responseText;
    }
    client.send();
}

现在您可以每秒调用两次:

var interval = setInterval(function(){
                             loadFile('file:///Users/trevor/Desktop/x.txt', 'xp');
                             loadFile('file:///Users/trevor/Desktop/y.txt', 'yp');
                           },1000);

一些注意事项:

  • 这可能在您的本地计算机上工作,但不适用于所有浏览器,并且绝对不能在(/如果)页面在服务器上时工作。
  • 由于调用是异步的,可能对旧调用的响应将在新调用之后返回。您可能希望保留旧的 clients 并取消它们。
  • 如果可能,另一种方法是使用&lt;iframe&gt;s,并定期刷新它们。

【讨论】:

  • 我喜欢这个主意...但我做不到,这是我用数据 url 而不是文件和 p.s 制作的粘贴箱。我不需要在服务器上运行它,它只是为了在我的计算机上使用
  • @Trevor - 似乎对我有用(虽然我错过了一行代码):jsfiddle.net/VTkFm,所以问题可能真的是file// 协议。
  • @Trevor - 关于编辑,这里有一个使用 iframe 的替代方案:jsfiddle.net/fWnNU(例如,您可以使用 FireBug 来查看每 5 秒重新加载一次图像)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-24
  • 1970-01-01
相关资源
最近更新 更多