0

jquery noty のボタンをクリックすると、PHP でダウンロードを開始しようとしています。noty が表示されるはずのときに空白のページが表示され、firebug コンソールにエラーはありません。

var noty_id = noty({
text: 'blah',
type: 'success',
buttons: [
    {addClass: 'btn btn-primary', text: 'Download', onClick: function($noty) {

        $noty.close();
        <?php

        if (file_exists($file)) {
            header('Content-Description: File Transfer');
            header('Content-Type: application/octet-stream');
            header('Content-Disposition: attachment; filename='.basename($file));
            header('Content-Transfer-Encoding: binary');
            header('Expires: 0');
            header('Cache-Control: must-revalidate');
            header('Pragma: public');
            header('Content-Length: ' . filesize($file));
            ob_clean();
            flush();
            readfile($file);
            exit;
        }
        ?>  
    }}
]
});
4

1 に答える 1

0

ajaxなしで動作しました。64 行目を jquery.noty.js から変更しました

から:

var $buttons = $('<div/>').addClass('noty_buttons');

に:

var $buttons = $("<form method='post'><input type='hidden' name='download' id='download'</form>").addClass('noty_buttons');

次に、noty 呼び出し中に非表示フィールドに値を割り当てました。

var noty_id = noty({
    text: 'blah',
    type: 'success',
    buttons: [
        {addClass: 'btn btn-primary', text: 'Download', onClick: function($noty) {

            document.getElementById('download').value = file;
            $noty.close();  
        }}
   ]
 });

あとは、フォームが投稿された後にダウンロードを開始するだけです

<?php    
if(isset($_POST['download']))
{    
    $file = $_POST['download']);

    if (file_exists($file)) {
        header('Content-Description: File Transfer');
        header('Content-Type: application/octet-stream');
        header('Content-Disposition: attachment; filename='.basename($file));
        header('Content-Transfer-Encoding: binary');
        header('Expires: 0');
        header('Cache-Control: must-revalidate');
        header('Pragma: public');
        header('Content-Length: ' . filesize($file));
        ob_clean();
        flush();
        readfile($file);
        exit;
    }   
}
?>
于 2013-03-21T21:12:35.533 に答える