我的问题的简化版本:
这里是名为 example.html 的 JavaScript 示例,它写入 JavaScript 数组的内容。
<html>
<head>
<script type="text/JavaScript">
// javascript array called data
data=[
[1,2],[3,4],[5,6]
]
function WriteText(){
for(var i=0;i<3;i++) document.write(data[i],"<br> ")
}
WriteText();
</script>
</head>
</html>
这些值不是数组,而是写入列file.txt,该列位于example.html所在的同一服务器目录中。 file.txt 看起来像这样
1 2
3 4
5 6
我想通过使用 php 读取此文件并将其传递给 javascript 来完成与上面示例相同的功能。 file.txt 是一个日志文件,每隔几秒就会添加新值 因此,当添加新值时,我希望看到更改更新到屏幕上。 这是读取文件的 getfile.php 函数。
<?php
$values = array();
foreach(file("file.txt") as $line => $content) {
$values[$line] = explode(' ',$content);
}
echo json_encode($values)
?>
这是执行此操作的代码。
<html>
<head>
<script type="text/javascript" src="jquery-1.5.2.js"></script>
<script type="text/javascript">
function WriteText(InputData){
for(var i=0;i<InputData.length;i++) document.write(InputData[i],"<br> ")
}
//WriteText(data);
setInterval($.get("getfile.php", { "func": "doSomething" },WriteText , "json"),1000);
</script>
</head>
</html>
这个想法是我从 http://api.jquery.com/jQuery.get/
此代码显示file.txt。但是,当我手动将新值附加到 file.txt 时,浏览器中没有任何更新。如果我手动刷新页面,也会显示新值。 那么我做错了什么? 是 php 脚本还是我没有正确使用 setInterval() 。 谢谢。
最佳答案
虽然我建议循环 onSuccess 而不是盲目轮询,但问题是您尚未为 setInterval 创建正确的闭包:
setInterval(function(){
$.get('getFile.php',{},WriteText,'json');
},1000);
关于php - jQuery 将 php 数组更新为 javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6134022/