Я боролся с этим …
Мне нужно опубликовать на странице php, чтобы создать CSV-файл. Проблема в том, что я не могу понять, как создать правильный массив и затем отправить его в php для обработки.
Моя страница php имеет функцию, которая перебирает опубликованное значение и записывает в CSV.
function outputCSV($data) {
$output = fopen("php://output", "w");
foreach ($data as $row) {
fputcsv($output, $row);
}
fclose($output);
}
Я получаю $data
через пост вроде так …
$csvData = $_POST['csvData'];
Затем запустив функцию …
outputCSV($csvData);
Когда я публикую сообщение, я получаю сообщение об ошибке Warning: Invalid argument supplied for foreach()
Я знаю, что это как-то связано с моими массивами на исходной странице (с поста) или с тем, как я их отправляю.
Вот как массив должен быть отформатирован (что работает, если я настрою его на странице php, затем запустите функцию)
outputCSV(
array(
array("name 1", "age 1", "city 1"),
array("name 2", "age 2", "city 2"),
array("name 3", "age 3", "city 3")
)
);
Теперь, на моей странице пост-я, я перебираю некоторые значения и создаю переменную var newData = [];
который состоит из массива с массивами в качестве значений, когда я печатаю в консоли, я получаю это …
Array [ Array[3], Array[3], Array[3] ]
Для меня это выглядит правильно, но мне тяжело передать эту переменную на страницу php для правильного выполнения.
Я пробовал много вещей, таких как установка входного значения с переменной, а затем публикации.
<input id="csv" name="csvData[]"/>
$('#csv').val(newData);
Я пытался использовать JQuery $.post
вот так
$.post("csvsave.php",{'csvData': newData});
Плюс куча других способов, хотя я бы потратил впустую ваше время, перечисляя их, поскольку я думаю, что любой из двух вышеуказанных способов должен работать, и я мог бы упустить что-то простое.
Иногда я получаю неполный результат (например, только один массив) с php print_r
в других случаях я получаю все значения в csv, но только в одной строке, но всегда выдает ошибку, о которой я упоминал выше, и даже иногда записывает ошибку на страницу csv.
Я так измучен сейчас, что любая помощь или руководство будет с благодарностью.
Заранее спасибо!
Джеймс
Сложение
Если я сделаю var_dump
по объявленной стоимости, я получаю это
array(1) { [0]=> string(59) "name 1,age 1,city 1,name 2,age 2,city 2,name 3,age 3,city 3" }
По какой-то причине я теряю внутренние массивы
Задача ещё не решена.
Других решений пока нет …