我有一个php脚本,可以监视目录中最新的json文件(如下)。然后在javascript中,我解析并显示该文件中的数据。javascript 每 x 分钟重新加载一次数据。我不会有文件的名称,只是它将包含 json 数据并使用最新的数据。
PHP 脚本存储存储在数组 fileList[0] 中的最新文件。 我想在没有整页刷新的情况下将其传递给 javascript,所以我检查了这个 stackoverflow 帖子,发现可以对 php 脚本进行 ajax 调用,但该示例更新页面上的元素。
有没有办法更新javascript变量? 我想过也许在刷新数据之前将文件名作为隐藏元素和抓取,但这似乎很粗糙。
<?php
date_default_timezone_set('America/New_York');
$files = glob('json/*.*', GLOB_BRACE);
usort($files, 'filemtime_compare');
function filemtime_compare($a, $b)
{
return filemtime($b) - filemtime($a); // Order newest to oldest
}
$i = 0;
$show = 1; // Number of new files to show.
$fileList = array();
foreach($files as $file)
{
if($i == $show) break; else ++$i;
array_push($fileList, $file);
}
//echo $fileList[0] // DEBUG: Make sure I have the right file.
?>
阿贾克斯:
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript">
function loadXMLDoc()
{
// This will send a request to a PHP page
$.ajax({
var jsonURL = "";
url: "phpDir.php",
dataType: "html",
success: function(data){
// Place the returned data into your content
}
jsonURL = $fileList[0];
});
</script>
</head>
<body>
回答你的问题"有没有办法更新javascript变量?
你会这样做:
var jsonURL = '';
function loadXMLDoc() {
// This will send a request to a PHP page
$.ajax({
url: "phpDir.php",
dataType: "JSON",
success: function(data){
jsonURL = data.url;
}
});
}
为了便于沟通,我将数据类型设置为 JSON。所以PHP输出需要json_encoded()ed:
<?php
$output = array('url' => $fileList[0]); // or whatever URL you want to return
echo json_encode($output);
?>