Php jqueryajax:pdf响应

Php jqueryajax:pdf响应,php,jquery,html,ajax,mime-types,Php,Jquery,Html,Ajax,Mime Types,我有一个链接,当用户点击它时,他会得到一个PDF。在jQuery中,我创建一个对服务器的POST ajax调用来获取PDF。响应为PDF,包含正确的内容标题等,通常会导致浏览器打开阅读器插件,或允许用户保存PDF。但就我而言,这是行不通的。有没有办法将数据内容类型或内容类型设置为PDF 我的ajax调用: $('#sf_getpdf').click(function() { $.ajax({ //create an ajax request to load_page.php

我有一个链接,当用户点击它时,他会得到一个PDF。在jQuery中,我创建一个对服务器的POST ajax调用来获取PDF。响应为PDF,包含正确的内容标题等,通常会导致浏览器打开阅读器插件,或允许用户保存PDF。但就我而言,这是行不通的。有没有办法将数据内容类型或内容类型设置为PDF

我的ajax调用:

$('#sf_getpdf').click(function() {

 $.ajax({    //create an ajax request to load_page.php

        type: "POST",

        url: "index.php?route=sale/order/superfaktura_getpdf&token=<?php echo $token; ?>",

        data: 'invoice_id=<?php echo $invoice_id; ?>&sf_token=<?php echo $sf_token ?>',  //with the page number as a parameter

        dataType: "text",   //expect html to be returned


        success: function(msg){



            if(parseInt(msg)!=0)    //if no errors

            {

            document.write(msg)
            }

        }

    });

});
$('sf#u getpdf')。单击(函数(){
$.ajax({//创建一个ajax请求以加载\u page.php
类型:“POST”,
url:“index.php?route=sale/order/superfaktura_getpdf&token=”,
数据:“发票id=&sf\U令牌=”,//页码作为参数
数据类型:“text”,//希望返回html
成功:功能(msg){
if(parseInt(msg)!=0)//如果没有错误
{
document.write(msg)
}
}
});
});
萤火虫,回应:

浏览器中的响应

我已尝试在服务器中设置内容类型,但未成功:

编辑:这样做不需要Ajax

<a id="adr_stitok" target="_blank" href="index.php?route=sale/order/superfaktura_getpdf&token=<?php echo $token; ?>&invoice_id=<?php echo $invoice_id; ?>&sf_token=<?php echo $sf_token ?>" >Download</a></td>


我会做的

它不会工作,因为AJAX调用不会获取PDF并将其加载到浏览器中。这就是为什么它被称为XMLHttpRequest。。它只交换文本

确保服务器端返回可下载的内容并提交到文件,例如:

            //$.download('path', 'data' [, 'post'])
            $.download = function(url, data, method) {
                //url and data options required
                if(url && data) {
                    var form = $('<form />', { action: url, method: (method || 'get') });
                    $.each(data, function(key, value) {
                        var input = $('<input />', {
                            type: 'hidden',
                            name: key,
                            value: value
                        }).appendTo(form);
                    });
                return form.appendTo('body').submit().remove();
                }
            throw new Error('$.download(url, data) - url or data invalid');
            };

$.download("index.php?route=sale/order/superfaktura_getpdf&token=<?php echo $token; ?>", {}, 'post')
下载('path','data'[,'post']) $.download=函数(url、数据、方法){ //需要url和数据选项 如果(url和数据){ var form=$('',{action:url,method:(method | |'get')}); $。每个(数据、函数(键、值){ 变量输入=$(''{ 键入:“隐藏”, 姓名:key,, 价值:价值 }).附录(表格); }); 返回表单.appendTo('body').submit().remove(); } 抛出新错误(“$.download(url,数据)-url或数据无效”); }; $.download(“index.php?route=sale/order/superfaktura_getpdf&token=“,{},'post')
document.write()不应该这样使用。你最好只是把用户发送到一个新页面。啊,我真傻。我不需要ajax来完成此任务。:)为什么你不简单的超链接pdf链接?或者通过表单提出post请求?这可能会有所帮助