У меня есть страница PHP, которая генерирует HTML-таблицу. В нижней части страницы вы можете нажать кнопку «отправить», и данные из таблицы будут отправлены в сценарий jquery под названием Table2CSV ( ссылка здесь ), который берет данные и отправляет на другой php-скрипт для экспорта CSV.
В конечном счете, все действия происходят здесь:
<form action="getCSV.php" method ="post" > <input type="hidden" name="csv_text" id="csv_text"> <input type="submit" value="Get CSV File" onclick="getCSVData()" </form> <script type="text/javascript"> function getCSVData(){ var csv_value=$('#example2').table2CSV({delivery:'value'}); $("#csv_text").val(csv_value); } </script>
То, что я хотел бы сделать, – это сгенерировать скрипт csv без необходимости выводить таблицу html на экран (по ссылке нажмите на другую страницу).
Я думаю, что мне в конечном итоге нужно просто изменить функцию javascript выше, чтобы вызвать getCSVdata при загрузке страницы, а затем запустить getcsv.php, но не уверен, как это сделать точно, так как я не очень хорошо знаком с JS.
Какие-либо предложения?
Не смотря на функцию table2CSV, я бы предположил, что для этого требуется, чтобы элемент таблицы HTML извлекал данные CSV. Это означает, что так или иначе код для таблицы HTML должен быть сгенерирован, если вам нужно использовать этот скрипт.
Самый простой способ – создать таблицу внутри div с отображением: hidden set. Таким образом, функция table2CSV может по-прежнему получать доступ к данным внутри таблицы, но пользователи никогда не видят ее на странице.
Кроме того, вы можете, конечно, всегда писать собственный серверный скрипт для анализа данных, которые обычно будут возвращены в таблице HTML в CSV-файл.
Проблема, которую вы смотрите здесь, заключается в том, что данные находятся на сервере, отправляются в браузер и затем очищаются JS для отправки на сервер для синтаксического анализа еще раз. Вещи были бы более прямолинейными, если бы либо сервер не полагался на клиента для анализа данных, либо клиент мог самостоятельно анализировать данные. Оба варианта, безусловно, возможны, но требуют написания собственного скрипта создания CSV-файла.
EDIT: Просто прочитайте свой комментарий выше. Если вы хотите, чтобы файл CSV был доступен с самого начала, вам нужно будет вызвать getCSVData () после инициализации DOM. Предполагая, что вы не извлекаете данные из изображений (которые загружаются асинхронно), вы можете просто:
$(document).ready(function() { getCSVData(); });
Это запустит ваш CSV-скрипт, как только страница будет готова к отображению, что сделает его доступным для пользователя без дополнительного щелчка.