我正在制作一个网站,其主要功能是每个目录中的文件列表,这些文件可以下载。我还有一个/ 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