【问题标题】:Downloading PDF File with AJAX/MVC 3使用 AJAX/MVC 3 下载 PDF 文件
【发布时间】:2011-09-27 16:25:00
【问题描述】:

基本上问题是这样的:

我有一个基于当前登录用户 ID 和 OID 从服务器请求的 pdf 文件。为了获取 OID,我必须根据用户单击的按钮从 HTML 表中解析一个值,然后将其发送到家庭控制器。然后运行 ​​API 调用来获取 OID。然后使用 OID 进行另一个 API 调用以提取 PDF 文件。 AJAX 用于将解析后的 H​​TML 值发送到主控制器,这里使用以下代码:

        $('.pdfPrint').live('click', function () {
            $(this).addClass('selectedDetails');
            var parent = $('.selectedDetails').parents('tr');
            var tr = $(this).parents('tr');
            var td = tr.children();
            var i = 0;
            td.each(function () {
                $(this).addClass('tdGrid' + i);
                i++;
            });
            var primaryReference = "";
            primaryReference = $('.tdGrid1').text();
            gridClassRemover();
            $.ajax({ // create an AJAX call...
                data: { pReference: primaryReference }, // get the form data
                type: "POST", // GET or POST
                url: "/Home/PrintFromGrid", // the file to call
                success: function (response) { // on success..
                    callTrackDialog();
                    // update the DIV                         
                },  // end of success
                error: function () {
                    alert('An error has occurred. If this problem persists please contact support.');
                }
            });  // end of .ajax
        });

【问题讨论】:

标签: ajax asp.net-mvc-3 pdf download


【解决方案1】:

是的,不要使用 AJAX 下载文件。只需将pReference 作为查询字符串参数传递给javascript:

window.location.href = '@Url.Action("PrintFromGrid", "Home")?pReference=' + encodeURIComponent(primaryReference);

【讨论】:

  • 感谢您的回复。我不明白的是,您将如何获取 pReference 值并在 1 个按钮单击中使用该代码行。这是上面在操作上编辑的当前代码。
  • @Nozoku,在您的 AJAX 代码中,您似乎已经拥有它。我的回答的重点是你让它不使用 AJAX,执行重定向。如果该值在服务器上是已知的,则根本无需使用任何 javascript,只需使用 Html.ActionLink 帮助器。
  • 不幸的是,我认为这行不通。我还忘了提到我正在手动构建整个表以及来自 Jquery 的所有按钮......这也是通过 API 调用进行 Ajax 调用。所以基本上这必须提取我需要的值,然后在 1 次按钮单击中进行重定向。
  • @Nozoku,你为什么认为这行不通?在按钮的点击回调中简单地把这个window.location.href重定向。可以肯定的是,AJAX 不能用于下载文件。
  • 你有点击回调的例子吗?
猜你喜欢
  • 2014-12-30
  • 1970-01-01
  • 2016-04-07
  • 2015-05-29
  • 1970-01-01
  • 2011-01-01
  • 2014-10-26
  • 1970-01-01
  • 2011-11-26
相关资源
最近更新 更多