我使用Snappy包装器在laravel(https://github.com/barryvdh/laravel-snappy)中生成PDF文件:
return \PDF::loadView( $view, $data )->download( 'Gender' );
然后使用jquery插件filedownloader(http://jqueryfiledownload.apphb.com/)
下载文件$(document).on('click','a#download-pdf', function(){
$(this).attr('disabled','disabled').html('<img src="{!! secure_url("/img/ajax-loader.gif",[]) !!}"/>');
$.fileDownload($(this).prop('href'), {
successCallback: function( url ) {
$('#download-pdf').removeAttr('disabled').text('Download pdf');
},
failCallback: function (responseHtml, url) {
$('#download-pdf').removeAttr('disabled').text('Download pdf');
alert('PDF creation failed, please try again');
}
});
return false;
});
我也尝试过:
$(document).on('click','a#download-pdf', function(){
$(this).attr('disabled','disabled').html('<img src="{!! secure_url("/img/ajax-loader.gif",[]) !!}"/>');
$.fileDownload($(this).prop('href'))
.done(function(){
$('#download-pdf').removeAttr('disabled').text('Download pdf');
})
.fail(function(){ $('#download-pdf').removeAttr('disabled').text('Download pdf'); });
return false;
});
文件正在成功下载,为什么回调没有被击中?
答案 0 :(得分:0)
请确保您的页面没有阻止弹出窗口。 fileDownload使用iframe弹出文件。这将解决您的问题。