使用javascript读取2个文本文件
问题描述:
我无法使用常规脚本或查询来获取JavaScript来加载2个文本文件,我需要帮助,请给与答复吗?
i can't get javascript to load 2 text files with regular script or query and i need help, plz give and answer?
这里是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>
答
您可以使用 setInterval
定期加载文件.这里有一些重构:
You can use setInterval
to load the files periodically. Here's a little refactoring:
function loadFile(url, elementId){
var client = new XMLHttpRequest();
client.open('GET', url);
client.onreadystatechange = function() {
document.getElementById(elementId).innerHTML = client.responseText;
}
client.send();
}
现在您可以每秒两次拨打此电话:
Now you can call this twice, every second:
var interval = setInterval(function(){
loadFile('file:///Users/trevor/Desktop/x.txt', 'xp');
loadFile('file:///Users/trevor/Desktop/y.txt', 'yp');
},1000);
一些注意事项:
- 这可能在您的本地计算机上有效,但不适用于所有浏览器,并且一旦(/如果)该页面在服务器上,则肯定无法正常工作.
- 由于调用是异步的,因此可能对旧调用的响应将在新调用之后返回.您可能想要保留旧的
client
s并取消它们. - 如果可能的话,一种替代方法是使用
<iframe>
,然后简单地定期刷新它们.
- This may work from your local computer, but will not work on all browsers, and definitely not work once (/if) the page is on a server.
- Since the calls are asynchronous, it is possible the response to an old call will return after a newer one. You may want to keep old
client
s and cancel them. - If possible, an alternative is to use
<iframe>
s, and simple refresh them periodically.