Благодаря моим предыдущим сообщениям, некоторые из 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();
}
Ваше здоровье.
Нет, запрос POST через ajax не приведет к перезагрузке страницы. GET / POST / PUT / .. - это только глаголы протокола http.
onclick=\"loadDoc('$filename')\"../../xy. Сделайте белый список.
Я все изменил, как ты сказал. Последнее, что вы сказали изменить, выглядит следующим образом: xhttp.open("GET", "/Home/.info.php?filename = " + filename, true); - Теперь я не получаю вывода.
Просто проверил мою консоль, прежде чем опубликовать это. Надо было сделать это раньше, лол. С вашими исправлениями он теперь что-то выводит (ура!), Но переменные отсутствуют. Между прочим, файл PHP, который принимает переменные, не неисправен - я его тестировал, он работает.
На этот раз в консоли нет абсолютно никаких ошибок ... Просто кажется, что он не отправляет переменную "filename" в другую мою php штуку ..
НАШЛИ ЭТО! В переменной, которую мы только что отладили, была еще одна ошибка: я заменил loadDoc('<?php echo $filename ?>') на loadDoc('{$filename}'). По неосторожности мы дважды указали, что выводим строки PHP.






Вам необходимо передать конкретное имя файла в качестве параметра на вашу страницу 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);
либо вы добавляете его в
info.php?file=thename, либо изменяете свой ajax на запрос POST и добавляете это имя файла в данные POST черезxhttp.send(parameters);