HTML 数据列表中的动态数组

Dynamic Array in HTML Datalist

我想动态刷新此数据列表中的 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>

希望你能帮帮我。

不完全确定您的最终目标是什么。

但一种做法是设置一个 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 代码,或者根据之前的用户交互触发一个触发器。

您可以在 "index.html" 文件中编写 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);
?>