2015-12-21 83 views
-1

我想动态生成href<a>标签,然后点击事件下载生成文件。将href动态链接到锚点标签然后调用点击事件

这是我的代码。

var bool = false; 
$('#lnkDownloadPDF').click(function() { 
    if (bool == false) { 
     MakeAjaxRequest('POST', HomePageURL + 'DownloadPDFPath', '{"designID": "' + sessionStorage.getItem("designID") + '" }').done(function (result) { 
      bool = true; 
      $('#lnkDownloadPDF').attr('href', result.d); 
      $('#lnkDownloadPDF').attr('download', 'sample.pdf'); 
      $('#lnkDownloadPDF').click(); 
     }); 
    } 
}); 

<a id="lnkDownloadPDF" class="greenDownloadBtn" href="#">Download</a> 

上面的代码工作,但我必须点击链接按钮两次下载指定的文件。

有没有更好的方法来实现?

+0

MakeAjaxRequest是您创建的函数吗?我试图做一个小提琴,但它似乎有些部分在这里失踪。 – Yumecosmos

+0

当你做了一个Ajax调用,你有两个选择:1:使用window.open与pdf链接,而不是尝试调用点击。 2: - 在第一次ajax调用之后,用适当内容编码的pdf的url进行另一次ajax调用,并处理js中的pdf内容以显示。 – Jas

+0

@Yumecosmos是的,这是一个自定义函数,用于制作阿贾克斯调用 – Shaggy

回答

1

你应该调用本地DOM API点击方法:

$('#lnkDownloadPDF')[0].click(); 

jQuery的explecitely禁用它的点击触发锚。

+0

好的这里有什么不对? –

+0

@ War10ck看到区别:https://jsfiddle.net/ncm7a3ty/1/现在相关的jQuery源代码:https://github.com/jquery/jquery/blob/master/src/event.js#LC515 –