2015-12-21 125 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 –