我正在製作一個網站,其主要功能是每個目錄中的文件列表,這些文件可以下載。我還有一個/ assets目錄,其中目錄樹被複制,但每個頁面都有必要的圖像/腳本,還有用於註釋的.csv文件以及每個文件的信息文件,我希望在其中顯示用戶單擊按鈕時發出JavaScript警報。在JavaScript中使用從PHP文件中搜集的數據
我使用PHP動態列出每個目錄中的所有文件以及文件大小和一些其他信息。我已經設法爲每個文件獲得一個按鈕,如果信息文件不存在,會提示「無信息」。但是,如果文件確實存在,我會得到兩個JavaScript錯誤之一,即SyntaxError: unterminated string literal
或SyntaxError: missing) after argument list
。
我與錯誤的按鈕源代碼最終被分割在警報中最後引號後兩行,所以我使用了PHP trim()
功能,以消除任何\n
S或\r
的左文件中,但它什麼也沒做。
至於第二個錯誤,我嘗試使用PHP的htmlentities
和htmlspecialchars
刪除文件中的任何引號(因爲這個錯誤必須與此有關),但是這又沒有做任何事情。
我上市的文件中的代碼是這樣的:
foreach(glob('*') as $filename){
if ($filename[strlen($filename) - 1] != '~'){
$info = '';
$file_type = filetype($filename);
$infoPath = __DIR__ . '/files' . $_SERVER['REQUEST_URI'] . $filename . '.txt';
if (file_exists($infoPath)){
$handle = fopen($infoPath, 'r');
$info = fread($handle, filesize($infoPath));
fclose($handle);
}
if ($info == ''){
$info = 'No info :(';
}
if ($file_type == 'dir'){
echo "<tr><td><img src=\"/assets/images/$file_type.png\" alt=\"$file_type\" width=\"16px\" height=\"16px\" /><a href=\"$filename\">$filename</a></td><td>-</td><td>" . date ("F d Y H:i:s", filemtime($filename)) . "</td><td><button onclick=\"alert('" . trim(htmlentities(htmlspecialcharacters($info))) . "')\">Info</button></td></tr>";
}
else{
echo "<tr><td><img src=\"/assets/images/$file_type.png\" alt=\"$file_type\" width=\"16px\" height=\"16px\" /><a href=\"$filename\">$filename</a></td><td>".filesize($filename)."</td><td>" . date ("F d Y H:i:s", filemtime($filename)) . "</td><td><button onclick=\"alert('" . trim(htmlentities(htmlspecialcharacters($info))) . "')\">Info</button></td></tr>\n";
}
}
}
所以,首先,我該如何終止字符串字面量,其次,我該怎麼辦所假設參數列表?
我有一種感覺,我可能不得不使用AJAX,但我會想,我可以只在JavaScript中回顯一個字符串。
感謝您幫助整理我的代碼,但不幸的是它並沒有解決我的問題。我認爲這可能與文件中的數據格式有關。不過謝謝,我的代碼看起來很整齊:) – Isaac274
不客氣。 'alert' onclick事件是否有效?或者返回的錯誤改變了? – JazZ
出於某種原因,我的瀏覽器實際上並沒有註冊新的代碼,但我重新啓動了我的計算機,並且這些錯誤消失了,現在它只是說'SyntaxError:Illegal character',對於我點擊的每個按鈕。我正在嘗試修復它。 – Isaac274