Показать информацию о файле? - PullRequest
0 голосов
/ 10 декабря 2018

Благодаря моим предыдущим постам, некоторые из 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 голосов
/ 10 декабря 2018

Вам необходимо передать определенное имя файла в качестве параметра на страницу 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...