Я пытаюсь создать загружаемый .ics-файл из пользовательского ввода.
Проблема, с которой я борюсь, это часть загрузки.
Код:
jQuery
function sendOnSuccess(){
var name = jQuery('.member.selected .name').text();
//day - only the number
var day = jQuery('.member.selected .calendar .date').text().replace(/\D+/g, '');
var month = jQuery('.member.selected .calendar .month').text();
var year = jQuery('.member.selected .calendar .year').text();
var time = jQuery('.member.selected .slots .selected').text();
//get everything before :
var hour = jQuery('.member.selected .slots .selected').text().substring(0, time.indexOf(":"));
//get everything after :
var minutes = jQuery('.member.selected .slots .selected').text().split(":").pop();
var number = jQuery('.member.selected .form input[name="tel"').val();
jQuery.ajax({
url: 'download_ics.php',
type: 'POST',
data: {
name : name,
day : day,
month : month,
year : year,
time : time,
hour : hour,
minutes : minutes,
number : number
},
success: function(output){
// output works
}
});
}
download_ics. php
<?php
require_once("ICS.php");
header('Content-Type: text/calendar; charset=utf-8');
header('Content-Disposition: attachment; filename.ics');
$name = $_POST["name"];
$day = $_POST["day"];
$month = $_POST["month"];
$year = $_POST["year"];
$time = $_POST["time"];
$minutes = $_POST["minutes"];
$hour = $_POST["hour"];
$number = $_POST["number"];
$date = strtotime("$year-$month-$day $hour:$minute$timeofday");
$ics = new ICS(array(
'description' => $name,
'dtstart' => $date,
'dtend' => $date . '+ 30 minutes'
));
echo $ics->to_string();
if($number){
//die(' Success');
die();
}else{
die("failed to create");
}
Все вызывается этой строкой html:
<a class="download" href="#" target="_blank" onclick="sendOnSuccess();">Download .ics</a>
Так что все работает нормально - просто я не могу понять, как загрузить файл после его создания. Все, что я получаю, это только содержимое файла.
Вдохновленный этим проектом: https://github.com/jakebellacera/ics