由于我以前的文章,yall的一些帮助我在此处设置了这段代码。 :)。它列出了当前文件夹中的文件。
<?php
foreach (glob("*") as $filename) {
echo "<th class=\"icon\"><img src=\"/Home/.res/save.png\"></th><th><a href=\"{$filename}\">{$filename}</a><th class=\"desc\"><a href=\"#open-modal\" onclick=\"loadDoc()\"><img src=\"/Home/.res/info.png\"></a></th></tr>";
}
?>
我现在想在每个文件名的末尾添加一个“信息”按钮。我成功了。 :) 唯一的事情是,它只能显示静态文本-我希望该信息选项卡显示有关所选文件的信息。然后,我对AJAX进行了一些研究。 我想到了以下代码:
function loadDoc() {
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById("info").innerHTML = this.responseText;
}
};
xhttp.open("GET", ".info.php", true);
xhttp.send();
此代码成功地动态加载了一个名为“ .info.php”的页面。 这是棘手的部分:如何使AJAX将变量(文件名)传输到.info.php-以便info.php可以显示有关所选文件的信息?
========编辑:出现了这个AJAX代码:
function loadDoc() {
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById("info").innerHTML = this.responseText;
}
};
xhttp.open("GET", "/Home/.info.php?filename=<?php echo "{$filename}" ?>", true);
xhttp.send();
}
我现在可以传递变量了! (感谢杰夫) 可悲的是,传递的变量始终被设置为列表中的最后一个文件,而不是由所选文件设置。有提示吗?
=========编辑#2 ========== 我现在的代码: 首先是PHP
<?php
foreach (glob("*") as $filename) {
echo "<th class=\"icon\"><img src=\"/Home/.res/save.png\"></th><th><a href=\"{$filename}\">{$filename}</a><th class=\"desc\"><a href=\"#open-modal\" onclick=\"loadDoc(<?php echo $filename ?>)\"><img src=\"/Home/.res/info.png\"> </a></th></tr>";
}
?>
现在使用AJAX:
function loadDoc(filename) {
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById("info").innerHTML = this.responseText;
}
};
xhttp.open("GET", "/Home/.info.php?filename=" + filename, true);
xhttp.send();
}
干杯。
答案 0 :(得分:0)
您需要将特定的文件名作为参数传递到PHP页面。
第一次更新的问题是foreach
遍历数组,将值分配给“临时”变量。
foreach (glob("*") as $filename) {
迭代完成后,该变量($filename
,应视为临时变量)仅包含该数组的最后一个值。因此,您的JS函数只有一个静态定义的文件名。
JS调用应传递文件名,而JS函数应接受一个值并在进行调用时使用它。
PHP:
onclick=\"loadDoc('{$filename}')\"
JS:
function loadDoc(filename) {
....
xhttp.open("GET", "/Home/.info.php?filename=" + filename, true);