2012-06-18 49 views
-1

我有一個php腳本,用於監視目錄中最新的json文件(如下)。然後在JavaScript中解析並顯示來自該文件的數據。 JavaScript每x分鐘重新加載一次數據。 我將不會有該文件的名稱,只是它將包含json數據並使用最新的一個。使用AJAX設置JS var與PHP var

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> 
+0

什麼是-1?有沒有辦法看到我做了什麼敲門,所以我不再做? – rd42

回答

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; 
     } 
    }); 
} 

爲了便於溝通的我已經具體的數據類型設置爲JSON。所以PHP輸出將需要json_encoded()編輯:

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

    echo json_encode($output); 
?>