0

我需要从选择框中获取一个值,并将其用于页面下方的 PHP 函数。

我有带有常规选择下拉列表的 index.php。选择框中的值和选项是文件夹的名称。当我选择一个文件夹时,我想通过 jquery/ajax 获取该值而不更新整个页面。然后,我将在页面下方的另一个 php 函数中使用该值,其中列出了在该文件夹中找到的文件名。

我也有一个 script.js 文件。到目前为止,我所拥有的是:

$(document).ready(function() {
  $("#select-folder").change(function() {
     // Get selected value and send to index.php
  });
});

我是 jquery 和 ajax 的新手,所以我不太清楚如何在不更新整个页面的情况下发送这个值,或者是否有可能?也许我需要在 index.php 页面上包含 javascript 作为脚本标记?

更新以添加新代码

这是在我的 index.php 文件中,用于获取文件夹名称以将其发送到 file.php

<script>
    $(document).ready(function() {
      $("#select-folder").change(function() {
        var value = $(this).val();
    console.log(value);
    $.ajax({
    url: "/files.php",
    data: "site=" + value,
    type: 'POST',
    success: function(var1, var2) {
      console.log(var1 + var2);
    }
    })
  });
});
</script>

然后,在 file.php 中,我获取文件夹名称并遍历文件夹内的所有文件。但是当我用这段代码输出时:

echo '<p>' . $file . '</p>';

它在控制台日志中输出,而不是在 index.php 中

问题解决了

经过大量搜索后,我意识到我应该通过 ajax 将代码添加到 div 中,否则由于页面加载而不会显示。

我将这段代码从上面添加到 javascript 的成功部分:

$('#show-files').html(var1);

感谢大家的帮助。

4

2 回答 2

1
$.post('/index.php', { selectedId: this.value }, function(resultHTML){
    $('#containerId').html(resultHTML);
});

此代码将选定的值发送到index.php返回部分 h​​tml 的页面,我们将此部分放在页面上的某个位置(在本例中为 id 为 containerId 的元素)

于 2013-10-25T08:13:50.780 回答
0

例如。我们有下一个文件夹(树)结构:

./images
  |--/foto1
  |---- 1-1.jpg
  |---- 1-2.jpg
  |---- -13.jpg
  |--/foto2
  |---- 2-1.jpg
  |---- 2-2.jpg
  |---- 2-3.jpg
./index.php

在您选择值为“images/foto1”的元素中选择 index/foto1 文件夹

$(document).ready(function() {
    $("#select-folder").change(function() {
        var folderName = $(this).val(); // get a folder to display.
        $.ajax(
            url: "index.php",
            type: "POST",
            data: {'folder':folderName},
            dataType: "json"
            success: function(data){
                 console && console.log(data);
                 // data variable will contains array of files
                 $("#result").html('');
                 for(i=0,c=data.length;i<c;i++)
                     $("#result").append(  data[i]+'<br>');
            }
        );

    });
});

index.php 包含下一个代码:

<?php
$files = array();
if( isset($_POST['folder']) && file_exists($_POST['folder']) && is_dir($_POST['folder']) ){
   if ($handle = opendir($_POST['folder'])) {
       while (false !== ($entry = readdir($handle)))
           array_push($files, $entry);
   }
}
echo json_encode($files);

您还需要为输入添加安全检查(目录检查)。您可以使用此realpath()dirname()和其他文件系统功能

于 2013-10-25T08:36:58.677 回答