Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
AJAX+;PHP+;下载mPDF生成的文件_Php_Jquery_Ajax_Mpdf - Fatal编程技术网

AJAX+;PHP+;下载mPDF生成的文件

AJAX+;PHP+;下载mPDF生成的文件,php,jquery,ajax,mpdf,Php,Jquery,Ajax,Mpdf,我正在创建一个应用程序,用户可以在其中查看表格中呈现给他的许多PDF文件。每一行也有复选框,允许用户检查或不检查我将在后面描述的下一个操作 这些复选框位于表单标记中,之后有一个提交按钮,通过POST方法通过AJAX请求将数组中的所有文件ID发送到PHP文件 AJAX请求如下所示: $.ajax({ url: link, type: 'POST', data: $(this).serialize(), success: function(result) {

我正在创建一个应用程序,用户可以在其中查看表格中呈现给他的许多PDF文件。每一行也有复选框,允许用户检查或不检查我将在后面描述的下一个操作

这些复选框位于表单标记中,之后有一个提交按钮,通过POST方法通过AJAX请求将数组中的所有文件ID发送到PHP文件

AJAX请求如下所示:

$.ajax({
    url: link,
    type: 'POST',
    data: $(this).serialize(),
    success: function(result) {

        if (result == 'ok') {

            if (redirect) {
                window.location.replace(redirect);
            } else {
                window.location.reload();
            }

        } else {

            if (callback) {
                $('#' + callback).html('<div>' + result + '</div>');
            } else {
                alert(result);
            }   

        }

    }
});
作为总结,不是提示对话框+下载-奇怪的字符覆盖回调区域


如果你们知道发生了什么,在这个特定的场景中我应该做什么,我将很高兴得到帮助。此外,如果您建议我在用户下载文件后如何删除该文件,甚至取消提示对话框,使文件不再留在服务器上,我将更加感激。

您需要从ajax返回指向文件的链接

$file = __PATH_TO_FILE__ . 'MaJjYzA4OGE4N2Q0MjUwNmJkZDQ0ZmZm.pdf'; //file which in fact exists
echo $file;
在ajax成功中,您只需打开一个新窗口即可访问该文件

success: function(file) {
   window.open(file);
}
另一个解决方案是使用隐藏的下载链接

  success: function(file) {
       $('body').append('<a href="'+file+'" class="hiddenLink" download style="display:none;"></a>');
      $('.hiddenLink').trigger('click');//or $('.hiddenLink')[0].click();
    }
成功:函数(文件){
$('body')。追加('');
$('.hiddenLink')。触发器('click');//或$('.hiddenLink')[0]。单击();
}
这对我很有效

成功:功能(响应){
i++;
$('#buttonid')。附加('');
如果(i==1){
$('.hiddenlink')[0]。单击();
}否则{
i=0;
$('.hiddenlink').remove();
}

}

那么您将pdf文件附加到html页面,您期望得到什么?现在-期望收到任何帮助和建议我应该更改什么从readfile($file)中删除返回并检查。@suraj-在我这样做之后,只是什么都没发生检查此链接可能对您有帮助我会马上检查有更改,但web浏览器正在阻止弹出窗口。那么如何实现下载对话框窗口呢?什么是下载对话框窗口?下载提示窗口,这样用户就可以将文件保存到自己的计算机上,很高兴能有所帮助
  success: function(file) {
       $('body').append('<a href="'+file+'" class="hiddenLink" download style="display:none;"></a>');
      $('.hiddenLink').trigger('click');//or $('.hiddenLink')[0].click();
    }