На wix у меня есть форма, которая загружает кучу информации в базу данных (имя, адрес электронной почты, адрес и т. д.). Затем у меня есть отдельная страница, которая берет данные из базы данных и компилирует их в формат CSV.
В настоящее время он выводит это в текстовое поле, которое оттуда я могу скопировать в текстовый файл и изменить расширение на csv. Это прекрасно работает для меня, но я не уверен, что другие смогут сделать то же самое.
Итак, мой вопрос в том, есть ли способ преобразовать эти данные в файл, а затем загрузить его?
мои данные выглядят примерно так:
"_id, фамилия, имя
345893458, Смит, Джон"
Я понял это, для тех, кто интересуется, вот решение.
Вам нужно создать объект iframe на странице Wix.
затем вы изменяете его html-код, чтобы он читался примерно так:
<!doctype html>
<html>
<head>
<script type = "text/javascript">
function init () {
window.onmessage = (event) => {
if (event.data) {
download('data.csv', event.data)
}
}
}
//download file
function download(filename, text) {
var element = document.createElement('a');
element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(text));
element.setAttribute('download', filename);
element.style.display = 'none';
document.body.appendChild(element);
element.click();
document.body.removeChild(element);
}
</script>
</head>
<body onload = "init();" style = "background-color:black;">
</body>
</html>
обратите внимание, что установка цвета фона важна, не совсем уверен, почему, но я уверен, что он каким-то образом инициализирует код.
Затем вы хотите добавить строку, подобную этой, в редактор кода Wix.
export function button2_click(event) {
// send message to the HTML Component
let data = $w('#output').value
$w("#html1").postMessage(data);
}
где 'output'
— это идентификатор текстового поля, содержащего данные csv (вы можете получить данные откуда-то еще), а 'html1
— это идентификатор контейнера iframe.
убедитесь, что функция связана с нажатием кнопки.