2013-10-25 2 views
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, так что я не знаю, как отправить это значение без обновления всей страницы или, если это возможно? Возможно, мне нужно включить javascript в качестве тега скрипта на странице index.php?

Обновлено добавить новый код

Это в моем файле 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

Проблема решена

я понял, после долгих поисков, что я должен добавить код в div через ajax или он не будет отображаться из-за загрузки страниц.

Я добавил этот кусок кода для успеха части JavaScript сверху:

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

Спасибо всем за помощь.

+0

Я не уверен, что следую этому вопросу.Я думаю, что вы пытаетесь сказать, что вы собираетесь делать манипуляции с DOM, чтобы изменить только часть страницы, исходя из того, что значение выпадающего меню? И источник этого изменения исходит из скрипта PHP, который отправляется с выпадающим меню? –

+0

Я хочу изменить часть страницы на основе значения выпадающего списка, да. И да, значение из выпадающих данных будет добавлено к функции PHP, которая находит файлы в папке. –

ответ

0

Например. Мы имеем следующую папку (дерево) структура:

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

Выберите папку индекса/foto1 в вас выберите элемент со значением "изображения/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() и другие Filesystem functions.

+0

Благодарим за отзыв. Это было ближе всего к тому, как я в конечном итоге решил его, поэтому я буду отмечать его как правильный ответ. –

+0

приветствуются – dododo

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

Этот код посылает выбранное значение index.php страницы, которая возвращает часть HTML и мы помещаем эту часть где-то на странице (в данном случае в элемент с идентификатором containerId)

+0

Когда я использую код, он создает дубликат всего на моем index.php Я пробовал использовать его как в своем собственном коде, который я написал выше, так и вне его. –

+0

Вы хотите вызвать PHP-файл, который выводит только ту часть страницы, которую вы хотите. Два способа сделать это - сделать отдельный файл или включить некоторый код в ваш скрипт index.php только для вывода всей страницы, если она не вызывается из $ .post. Я не знаю макет вашей страницы, поэтому я не могу по-настоящему рекомендовать так или иначе. –

+0

@DanGoodspeed Я изменил свой код, поэтому теперь он отправляет запрос ajax в другой php-файл Files.php. В files.php, я получаю имя папки, перебираю все файлы в этой папке. И он работает хорошо, но когда я пишу 'echo '

'. $ file. '

' 'он будет выводить это только в журнале консоли. Как его отобразить на моей странице index.php? Нужно ли мне делать больше функций Ajax? –

Смежные вопросы