强制下载使用php创建的ics文件,其中包含从用户输入收集的AJAX请求发送的POST数据

强制下载使用php创建的ics文件,其中包含从用户输入收集的AJAX请求发送的POST数据,php,jquery,html,ajax,download,Php,Jquery,Html,Ajax,Download,我正在尝试从用户输入创建一个可下载的.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, '');

我正在尝试从用户输入创建一个可下载的.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
          }
        });
}
下载_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");
}

你能给我们看看ICS.php吗?is有文档吗

我会从改变开始

header('Content-Disposition: attachment; filename.ics');


是的,文档可以在这里找到:还有ICS.php(),但我似乎找不到解决方案。你就不能用表格吗?如果您需要使用ajax,它会更复杂。尝试一些答案
header('Content-Disposition: attachment; filename.ics');
header('Content-Disposition: attachment; filename="filename.ics"');