显示文件信息?

时间:2018-12-09 22:56:38

标签: php html ajax

由于我以前的文章,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();
}

干杯。

1 个答案:

答案 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);