【问题标题】:Sending data using jquery .ajax to generate pdf file使用 jquery .ajax 发送数据以生成 pdf 文件
【发布时间】:2015-08-02 02:40:41
【问题描述】:

我有以下 jquery 代码用于大部分工作的按钮,但我错过了一个步骤。

$('#download').on('click', function(e) {
    var data = {
        header: $('#header').html(),
        title: $('#title').html(),
        table: $('#nfl').html(),
        rules: $('#rules').html(),
    };

    e.preventDefault();

    $.ajax({
        url: 'print',
        method: 'post',
        data: data,
        success: function(returnValue) {


        }
    });
});

它将数据发送到将生成自动下载的 pdf 文件的打印 url。我可以在 firebug 中看到生成 pdf 的代码,但没有下载。我从来没有真正理解成功:参数都很好。我认为这是我应该编辑以使其工作的地方

【问题讨论】:

  • 在 ajax 调用中将 async 设置为 false,然后尝试。

标签: jquery ajax pdf


【解决方案1】:

当您说“打印 url ... 将生成一个自动下载的 pdf 文件”时,我假设您的意思是,它包含一个 Content-Disposition: Attachment 响应标头,目的是用户可以在本地保存 pdf。我相信在这种情况下,您实际上并不需要 AJAX,因为它不允许用户保存下载。相反,提交一个实际的表格。只要响应具有 Content-Disposition: Attachment 标头,它就不会更改页面,但如果您想要双重安全,您可以将表单的目标设置为 iframe 或 _blank

$('#download').on('click', function(e) {
    e.preventDefault();

    var form = $("<form>", { action: "print", method: "POST", target: "_blank" });

    $("<input>", { name: "header", value: $("#header").html() }).appendTo(form);
    $("<input>", { name: "title", value: $("#title").html() }).appendTo(form);
    $("<input>", { name: "table", value: $("#nfl").html() }).appendTo(form);
    $("<input>", { name: "rules", value: $("#rules").html() }).appendTo(form);

    form.submit();
});

【讨论】:

  • 这正是我所需要的。谢谢
【解决方案2】:

success: 钩子的目的是让您的代码可以处理返回值,这将是调用 ajax 的脚本将输出的任何内容。

在这种情况下,您将需要此函数来显示您创建的 pdf 文件,我假设这将设置 iframe 的源或将返回的对象插入 DOM。

【讨论】:

    猜你喜欢
    • 2013-10-13
    • 2015-08-05
    • 1970-01-01
    • 2013-11-07
    • 1970-01-01
    • 2018-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多