Я пытаюсь отправить JavaScript массив в PHP скрипт, используя Ajax, но когда я пытаюсь var_dump $ _ POST ['file_paths'] получить строку вместо массива в качестве вывода, я хотите вывод в формате массива не в строковом формате. это из-за настройки Ajax, которую я использую в коде, подобном contentType: false и processData: false .
я пытался JSON декодирование и кодирование, все еще получая строка как вывод, если кто-нибудь может указать мне правильное направление. (нужен вывод в формате массива, а не в строке)
HTML Разметка: (загрузка папки)
<form id='submit' action='' method="post">
<div id="upload">
<div class="fileContainer">
<input id="myfiles" type="file" name="myfiles[]" multiple="multiple" webkitdirectory multiple directory />
</div>
</div>
<input id="directory_name" type="text" name="directory_name" placeholder="Directory Name" >
</form>
Это просто js для извлечения всех данных формы, таких как имя родительского каталога, данные файла и путь к файлу, используя
webkitRelativePath
после извлечения всех данных, отправляющих два массива, 1-й файл массив и второй это массив file_paths для php скрипта, когда я console.log file_paths массив получает массив.
JS скрипт:
$(document).ready(function() {
$('#myfiles').on("change", function() {
var myfiles = document.getElementById("myfiles");
var file_paths = [];
var files = myfiles.files;
var new_directory_name =$('#directory_name').val();
var data = new FormData();
data.append('new_directory_name',new_directory_name);
data.append('action', 'upload_folder_to_server');
data.append('data_room_id', 55);
data.append('username', 'saurabh');
for (i = 0; i < files.length; i++) {
data.append('file' + i, files[i]);
file_paths.push(files[i].webkitRelativePath);
console.log(files[i].webkitRelativePath);
}
//file_paths = JSON.stringify(file_paths);
console.log(file_paths);
data.append('file_paths', file_paths);
$.ajax({
method: "POST",
url: ajaxurl,
contentType: false,
data: data,
processData: false,
//cache: false
}).done(function(msg) {
$("#loadedfiles").append(msg);
});
});
});
javascript вывод:
Array(3) [ "first folder/second folder/third folder/upload_groupmembers_additonal_login_sample(7).xlsx", "first folder/second folder/upload_groupmembers_additonal_login_sample(7).xlsx", "first folder/upload_groupmembers_additonal_login_sample(7).xlsx" ]
В PHP Скрипт, когда var_dump file_paths получает выходные данные в строковом формате. PHP Сценарий:
function upload_folder_to_server()
{
var_dump($_POST['file_paths']);
}
add_action('wp_ajax_upload_folder_to_server', 'upload_folder_to_server');
add_action('wp_ajax_nopriv_upload_folder_to_server', 'upload_folder_to_server');
Вывод:
string(232) "first folder/second folder/third folder/upload_groupmembers_additonal_login_sample(7).xlsx,first folder/second folder/upload_groupmembers_additonal_login_sample(7).xlsx,first folder/upload_groupmembers_additonal_login_sample(7).xlsx"
Может кто-нибудь объяснить мне, почему я получаю строку в PHP и массив в JavaScript