Мне нужно экспортировать данные некоторого места из API Карт Google в файл (это может быть текстовый файл, но моя конечная цель - иметь CSV для импорта в мою базу данных). В настоящее время я использую их код JavaScript и некоторый метод JSON для отображения содержимого моих результатов.
Моя цель:
Создайте переменную foundPlaces, которая содержит все места в соответствии с типом места, которое я ищу. Затем поместите все эти данные в загруженный файл.
В настоящее время я столкнулся с проблемой, так как, когда я открываю файл, я вижу только первый массив ["name","type","geo"]; и больше ничего (нет данных с мест). Это странно, потому что я могу отображать их на console.info
Дополнительная информация: Я использую Blob, чтобы поместить весь свой контент и экспортировать этот blob-объект в файл.
Вот мой код
var foundPlaces = ["name","type","geo"];
function download(content, fileName, contentType) {
var a = document.createElement("a");
var file = new Blob([content], {type: contentType});
a.href = URL.createObjectURL(file);
a.download = fileName;
a.click();
}
function callback(results, status) {
if (status === google.maps.places.PlacesServiceStatus.OK) {
console.info("Creating File");
test = results[0].name;
for (var i = 0; i < results.length; i++) {
createMarker(results[i]);
foundPlaces.push(results[i].name);
}
}
}
console.info(foundPlaces);
download(foundPlaces, 'places.txt', 'text/plain');
Это может быть тип контента, я точно не знаю, в чем я ошибаюсь. Буду благодарен за вашу помощь.
Я в курсе, что прошу поиграть с клиентской стороной.
Привет, @Makore, спасибо за помощь. Я исправил свою проблему тем же способом, что и вы. Добавление кнопки «onclick» в HTML-код. '<button onclick = "download (foundPlaces,' places.csv ',' text / plain ')"> Recuperer CSV </button>'. Это так работает. Однако я хотел, чтобы он загружался автоматически в конце скрипта: поэтому я вызвал функцию внутри скрипта. Спасибо за помощь.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вам нужно добавить a к телу, закодировать данные и добавить кодировку.
Примечание: Я жестко запрограммировал тип пантомимы, но заполните его, чтобы передать его в качестве аргумента функции.
function download(filename, text) {
const a = document.createElement('a');
a.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(text));
a.setAttribute('download', filename);
a.style.display = 'none';
document.body.appendChild(a);
a.click();
document.body.removeChild(a);
}<!-- Example -->
<button onclick = "download('test.txt', 'I love text')">Click to download</button>Ваш код работает нормально, спасибо. Что мне теперь делать, если я хочу, чтобы он скачался автоматически?
@Squicker Я рад, что смог помочь. Например, вы можете добавить загрузку функции как обратный вызов к вызову ajax. Поток должен быть таким: 1. Выполните вызов API Google. 2. Отформатируйте данные из запроса ajax. 3. Отправьте отформатированные данные в функцию загрузки.
Можете ли вы предоставить пример имеющегося у вас объекта данных?