Передача массива от JavaScript до PHP без потери функциональности кода - PullRequest
0 голосов
/ 01 апреля 2020

Используя этот фрагмент кода, я могу перечислить все URL-адреса файлов внутри Folder_A и Folder_B и Folder_C:

<?php
function getDirContents($directories, &$results = array()){

    $length = count($directories);
    for ($i = 0; $i < $length; $i++) {

    $files = array_diff(scandir($directories[$i]), array('..', '.'));;
    foreach($files as $key => $value){
        $path = $directories[$i].DIRECTORY_SEPARATOR.$value;
        if(is_dir($path)) {
          getDirContents($path, $results);
        } else {
          $directory_path = basename($_SERVER['REQUEST_URI']);
          $results[] =  'https://' . $_SERVER['SERVER_NAME'] . str_replace($directory_path, "", $_SERVER['REQUEST_URI']) .$path;
        }
    }

    }

    return $results;
}


$directories = array("Folder_A", "Folder_B","Folder_C");

echo json_encode(getDirContents($directories));

. И используя приведенный ниже код JavaScript, мы можем зарегистрировать их в консоли (и иметь к ним доступ через javascript):

$(document).ready( function() {
        $.ajax({
            type: 'POST',
            url: '../test.php',
            data: 'id=testdata',
            dataType: 'json',
            cache: false,
            success: function(result) {
            console.log(result);
            },
        });
});

Я просто хочу одну простую вещь, которую я сам не могу найти решение:

Как я могу Определите папки внутри javascript вместо того, чтобы иметь их в PHP?

Я имею в виду вместо того, чтобы иметь это внутри PHP код:

$directories = array("Folder_A", "Folder_B","Folder_C");

Я хочу иметь это в Javascript:

let directories = [ "Folder_A", "Folder_B","Folder_C"];

И вернуть ту же функциональность.

1 Ответ

1 голос
/ 01 апреля 2020

Передайте каталоги как часть параметра data:.

$(document).ready( function() {
    let directories = [ "Folder_A", "Folder_B","Folder_C"];
    $.ajax({
        type: 'POST',
        url: '../test.php',
        data: {id: "testdata", directories: directories},
        dataType: 'json',
        success: function(result) {
            console.log(result);
        },
    });
});

Затем в PHP вы можете использовать $_POST['directories'] для получения массива:

echo json_encode(getDirContents($_POST['directories']));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...