Динамический массив в HTML Datalist - PullRequest
0 голосов
/ 11 декабря 2018

Я хочу динамически обновить код php в этом списке данных, не перезагружая всю страницу.

<form id="form1" action="1.5-unterseite-nach-Eingabe.php" method="post" enctype="multipart/form-data">
    <tr>
        <td>Lecture auswählen: </td>
        <td><input list="files" name="unterlage"></td>
    </tr>
    <datalist id="files">
    <?php

        $files = array_diff( scandir("/srv/www/htdocs/share/"), array(".", "..") );
            foreach ($files as $option) {
                echo '<option value=\''.$option.'\'>';
            }
        ?>
    </datalist>

Надеюсь, вы поможете мне.

Ответы [ 2 ]

0 голосов
/ 11 декабря 2018

Вы можете написать свою HTML-форму в файле «index.html».И использует интервалы javascript для запроса данных, которые предоставляет PHP в data.php.Псевдокод будет выглядеть примерно так:

// index.html

<html>
<form id="form1" action="1.5-unterseite-nach-Eingabe.php" method="post" enctype="multipart/form-data">
<tr><td>Lecture auswählen: </td><td><input list="files" name="unterlage"></td></tr>
<datalist id="files">
</datalist>
</form>
<script>
window.setInterval(function(){
    function request_data(){
           $.ajax({
           url: 'data.php',
           method: "post",
           success: function (data) {
              // Do something here
              $("#files").html(data);
           }
        })
    }
},2000); // 2 secends request a time
</scirpt
</html>

// data.php

<?php
    $files = array_diff( scandir("/srv/www/htdocs/share/"), array(".", "..") );
    return json_encode($files);
?>
0 голосов
/ 11 декабря 2018

Не совсем уверен, какова ваша конечная цель.

Но одним из способов действий является установка метода AJAX GET, который вызывает этот фрагмент PHP в своем собственном файле.Соберите все возвращаемые данные и вставьте их на страницу, используя JS.

Начните изучать JS, потому что это единственный способ получить динамический контент без перезагрузки страницы.

Чтобы получить данные с помощью AJAX, используйте что-то похожее:

<script>
    $(document).ready(function(){
        $.ajax({                                      
            url: 'URL_TO_PHP_FILE/scanFiles.php',        
            dataType: 'text',   
            success: function(data)
            {
                $("#files").html(data);
            }
        });
    });
</script>

Теперь переместите ваш PHP-фрагмент в его собственный файл просто так:

$files = array_diff( scandir("/srv/www/htdocs/share/"), array(".", "..") );
    foreach ($files as $option) {
        echo '<option value=\''.$option.'\'>';
    }
?>

При условии, что вы будете использовать только эхоЯ хотел бы получить ответ на ваш AJAX-вызов.

Также убедитесь, что у вас есть библиотека jQuery, связанная с вашей страницей, чтобы вы могли использовать AJAX.Взгляните на jQuery немного подробнее.Это сделает вашу жизнь намного проще.

Вам также понадобится метод для выполнения кода JS каждые несколько секунд или триггер на основе предыдущего взаимодействия с пользователем.

...