Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/245.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.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
Php 使用Jquery从字符串下载pdf文件_Php_Javascript_Ajax_Model View Controller_Zend Framework - Fatal编程技术网

Php 使用Jquery从字符串下载pdf文件

Php 使用Jquery从字符串下载pdf文件,php,javascript,ajax,model-view-controller,zend-framework,Php,Javascript,Ajax,Model View Controller,Zend Framework,全部, 我有一个用Zend框架和MVC编写的PHP5应用程序。在我的主页上,我想加入下载动态生成的pdf文件的功能。这样做的方式是: 用户点击“下载文件”链接 单击时,PHP控制器将调用AJAX,它获取表单数据,生成pdf并将其作为字符串返回 我的javascript函数现在有pdf字符串 如何向用户显示“打开/保存”对话框以从javascript下载pdf文件 我有以下代码: <script type="text/Javascript"> $('#dlcontent').cl

全部,

我有一个用Zend框架和MVC编写的PHP5应用程序。在我的主页上,我想加入下载动态生成的pdf文件的功能。这样做的方式是:

  • 用户点击“下载文件”链接
  • 单击时,PHP控制器将调用AJAX,它获取表单数据,生成pdf并将其作为字符串返回
  • 我的javascript函数现在有pdf字符串
  • 如何向用户显示“打开/保存”对话框以从javascript下载pdf文件
  • 我有以下代码:

    <script type="text/Javascript">
       $('#dlcontent').click(function(e) {
          $.ajax({
                    type: 'POST',
                    url: "/downloads/dlpolicies",
                    data:  $("#frmMyContent").serialize(),
                    cache: false,
                    dataType: "html",
                    success: function(html_input){
                        alert(html_input);  // This has the pdf file in a string.
                        //ToDo: Open/Save pdf file dialog using this string..
                    }
                });
    });
    </script>
    
    
    $('#dlcontent')。单击(函数(e){
    $.ajax({
    键入:“POST”,
    url:“/downloads/dlpolicies”,
    数据:$(“#frmMyContent”).serialize(),
    cache:false,
    数据类型:“html”,
    成功:函数(html_输入){
    alert(html_input);//这是一个字符串形式的pdf文件。
    //ToDo:使用此字符串打开/保存pdf文件对话框。。
    }
    });
    });
    
    谢谢


    最简单的方法是打开一个包含URL到pdf字符串的新窗口。

    最简单的方法是打开一个包含URL到pdf字符串的新窗口。

    将一个元素添加到您希望链接的页面中。它可以是一个span或div或表中的一个单元格,也可以是您想要的任何内容。给它一个唯一的ID。然后使用jQuery设置该元素的html。我在这里把它称为
    somepageelement

    $('#dlcontent').click(function(e) {
          $.ajax({
                    type: 'POST',
                    url: "/downloads/dlpolicies",
                    data:  $("#frmMyContent").serialize(),
                    cache: false,
                    dataType: "html",
                    success: function(html_input){
                        $('#somepageelement').html('<a href="' + html_input + '">Click here to download the pdf</a>');
                    }
                });
    });
    
    $('#dlcontent')。单击(函数(e){
    $.ajax({
    键入:“POST”,
    url:“/downloads/dlpolicies”,
    数据:$(“#frmMyContent”).serialize(),
    cache:false,
    数据类型:“html”,
    成功:函数(html_输入){
    $('#somepageelement').html('');
    }
    });
    });
    
    将一个元素添加到您希望链接的页面中。它可以是一个span或div或表中的一个单元格,也可以是您想要的任何内容。给它一个唯一的ID。然后使用jQuery设置该元素的html。我在这里把它称为
    somepageelement

    $('#dlcontent').click(function(e) {
          $.ajax({
                    type: 'POST',
                    url: "/downloads/dlpolicies",
                    data:  $("#frmMyContent").serialize(),
                    cache: false,
                    dataType: "html",
                    success: function(html_input){
                        $('#somepageelement').html('<a href="' + html_input + '">Click here to download the pdf</a>');
                    }
                });
    });
    
    $('#dlcontent')。单击(函数(e){
    $.ajax({
    键入:“POST”,
    url:“/downloads/dlpolicies”,
    数据:$(“#frmMyContent”).serialize(),
    cache:false,
    数据类型:“html”,
    成功:函数(html_输入){
    $('#somepageelement').html('');
    }
    });
    });
    
    我会尽量保持简单。只需使用
    target=“\u blank”
    对表单进行sumbit,然后让PHP强制下载文件

    HTML代码

    <script type="text/Javascript">
    $('#dlcontent').click(function(e) {
      e.preventDefault();
      $("#frmMyContent").submit();
    });
    </script>
    
    <form id="formMyContent" action="/downloads/dlpolicies" target="_blank" ... >
    ...
    </form>
    
    从这里得到这个:

    我会尽量保持简单。只需使用
    target=“\u blank”
    对表单进行sumbit,然后让PHP强制下载文件

    HTML代码

    <script type="text/Javascript">
    $('#dlcontent').click(function(e) {
      e.preventDefault();
      $("#frmMyContent").submit();
    });
    </script>
    
    <form id="formMyContent" action="/downloads/dlpolicies" target="_blank" ... >
    ...
    </form>
    
    从这里得到这个:

    问题是“#dlcontent”本身就是下载pdf文件的链接。我可以通过弹出窗口来做吗?有了这个,我不必点击2个链接来下载文件。@vincent啊,好的,很抱歉误解了。在这种情况下,我不知道为什么需要Ajax来完成这项工作。我会有一个表单,它发布到生成pdf的页面,并在表单上指定
    target=“\u new”
    ,以便在新窗口中打开。如果您愿意,您可以通过点击
    #dlcontent
    提交表单。问题是“#dlcontent”本身就是下载pdf文件的链接。我可以通过弹出窗口来做吗?有了这个,我不必点击2个链接来下载文件。@vincent啊,好的,很抱歉误解了。在这种情况下,我不知道为什么需要Ajax来完成这项工作。我会有一个表单,它发布到生成pdf的页面,并在表单上指定
    target=“\u new”
    ,以便在新窗口中打开。如果你愿意,你可以这样做,点击
    #dlcontent
    提交表单。嗯。我如何将pdf字符串强制转换为result.pdf?内容类型应该是“application/pdf”,因为它在很久以前是标准化的。嗯。我如何将pdf字符串强制转换为result.pdf?内容类型应该是“application/pdf”,因为它在很久以前是标准化的。