使用AJAX使用PHP var设置JS var

时间:2012-06-18 15:46:11

标签: php javascript ajax variables

我有一个php脚本,用于监视目录中的最新json文件(如下所示)。然后在javascript中我解析并显示该文件中的数据。 javascript每x分钟重新加载一次数据。 我不知道文件的名称只是包含json数据并使用最新的数据。

PHP脚本存储存储在数组fileList [0]中的最新文件。我想将其传递给javascript而不进行整页刷新,所以我检查了这个stackoverflow post并发现可以对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.
?>

AJAX:

<!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>

1 个答案:

答案 0 :(得分:2)

回答你的问题“有没有办法更新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;
        }
    });
}

为了便于沟通,我已将dataType设置为JSON。所以PHP输出需要是json_encoded()ed:

<?php
    $output = array('url' => $fileList[0]); // or whatever URL you want to return

    echo json_encode($output);
?>