JQuery - Daha sonra AJAX arama ve görüntü dosya üzerinden PHP komut dosyasına değişkenler geçmek

3 Cevap php

Birisi sayfasındaki bir bağlantıyı basarak istediğinde olarak ne zaman ve anında bunu yaparken, benim olayları için Outlook olay dosyaları oluşturmak için çalışıyorum.

İşte ben bugüne kadar ne var, ama ben döndürülen içerik indirmek için tarayıcı nasıl bulamıyor.

Ben _GET yoluyla her şeyi gönderdi, ben bunu nasıl biliyorum, ama ben dolayısıyla ben bu rota aşağı gidiyorum, _POST ile bunu tercih ederim ..

Any thoughts? Thanks!

HTML / Javascript

<script>
$(function() {
    $(".button").click(function() {
        // validate and process form
        // first hide any error messages
        var start = $("input#start").val();
        var end = $("input#end").val();
        var dataString = 'start='+ start + '&end=' + end;
        $.ajax({
            type: "POST",
            url: "/calendar.php",
            data: dataString,
            success: function(data) {
                //Need to return the file contents somehow!
            }
        });
    return false;
    });
});
</script>
<form name="calendar" method="post" action="">
      <input type="hidden" name="start" id="start" value="<?php echo $start; ?>" />
      <input type="hidden" name="end" id="end" value="<?php echo $end; ?>" />
      <input type="submit" name="submit" class="button" id="submit_btn" value="Outlook" />
    </fieldset>
</form>

PHP File

<?php
if (isset($_POST['start'])) {
    $start = $_POST['start'];
    $end = $_POST['end'];
    $c = header("Content-Type: text/Calendar");
    $c .= header("Content-Disposition: inline; filename=calendar.ics");
    $c .= "BEGIN:VCALENDAR\n";
    $c .= "VERSION:2.0\n";
    $c .= "PRODID:-//xxxyyyy//NONSGML //EN\n";
    $c .= "METHOD:REQUEST\n"; // requied by Outlook
    $c .= "BEGIN:VEVENT\n";
    $c .= "UID:". $start . $end ."-" . "-xxxxyyyy.com\n"; // required by Outlook
    $c .= "DTSTAMP:".date('Ymd').'T'.date('His')."\n"; // required by Outlook
    $c .= "DTSTART:20080413T000000\n"; 
    $c .= "SUMMARY:" . "\n";
    $c .= "DESCRIPTION:" .  "\n";
    $c .= "END:VEVENT\n";
    $c .= "END:VCALENDAR\n";
    echo $c;        
} else {
    echo "Sorry you can't access this page directly";   
}
?>

3 Cevap

PHP dosyasının çıktısı başarı geri arama "veri" değişkeni içine koymak olacaktır.

Biz buradayken Ayrıca, aynı zamanda bir kaç şey kısayol olabilir. Bunun yerine veri dizisi oluşturmak (ve hiç kimse bir = veya & orada koyar umuyoruz) dizeleri bitiştirmek, nesneleri kullanabilirsiniz:

dataObj = { start : start, end : end };

Ve o zaman sadece .ajax veri özelliği olduğunu geçmek

Ajax isteği i gibi yönlendirme başlıklarını çalışmak için herhangi bir yol bulamadık, Yani ben Ajax başarı geri arama indir eylem url için window.location kod kullanılır. Bazı ilerleme gösteren dışında sizin durumda, Onların gönderme ajax isteği gerek olmamalıdır. Yani doğrudan + + start '& ucunu =' + end '? Calendar.php = start' = window.location yürütebilirsiniz;.

Eğer tek yolu bunu, POST aracılığıyla yürütmek yerine, Ajax ile doğrudan Form Mesaj kullanın istediğiniz emin Alternatif eğer.

Aşağıdaki kod ipucu kontrol edin. Bu size yardımcı olabilir ..

type: "POST",

data: ({"start" : <?php echo $start; ?> , "end" : <?php echo $end; ?>}) ,
success: function() {
                    //Do something
        }
});