使用这段代码,我可以列出 Folder_A
和 Folder_B
和 Folder_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/