javascript - 将数组从 JavaScript 传递到 PHP,而不丢失代码功能

标签 javascript php ajax

使用这段代码,我可以列出 Folder_AFolder_BFolder_C 内的所有文件 URL:

<?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"];

并返回相同的功能。

最佳答案

将目录作为 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']));

关于javascript - 将数组从 JavaScript 传递到 PHP,而不丢失代码功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60960125/

相关文章:

javascript - 使用destination-over保存背景和实际草图

javascript - "JavaScript placed at the end of the document so the pages load faster"是吗?

javascript - 如何使用嵌套的 Json 填充 Kendo UI 网格?

php - 属性集合中的 Sphinx 搜索

php - 想要使用底层 C++ 构建基于浏览器的 Web 应用程序,我在看 AJAX、LAMP 吗?

javascript - CKEDITOR:如何转换所有 html 实体

php - 无法向我自己的域发送电子邮件

php - 输入类型文本不适用于弹出窗口

php - 如何在 Laravel 5 中使用 AJAX 发送数据?

javascript - 如何使用ajax/jquery调用外部页面而不是使用iframe?