簡體   English   中英

Javascript iFrame添加以在IE7和IE8中下載文件

[英]Javascript iFrame add to download file in IE7 and IE8

我需要在ajax請求后下載文件。 因此,我將iframe添加到一個頁面,該頁面將一些數據發布到webmethod並獲取文件。 這是javascript代碼,位於按鈕單擊處理程序中:

var iframe = $("<iframe id='PDFIframe' style='display:none'></iframe>");
var iForm = $("<form id='PDFForm' action='App/Billing.asmx/GetPDF' target='PDFIframe' method='post' target='_parent'></form>")
            .html('<input type="hidden" name="HtmlContent64" value="' + htmlContent64 + '"/><input type="hidden" name="billNum" value="' + this.billId + '"/>');

iframe.append(iForm);
tempCmp.append(iframe);
iForm.submit();

但是我在IE 7和8的iframe.append(iForm)行中iframe.append(iForm)了一個問題。在IE 9中,這一功能很完美! 我的代碼有什么問題?

編輯:我更多地了解了這個問題,也許這個問題導致我在IE9中測試不同的IE版本,更改了圖片中的值。 模式更改會導致此問題嗎? 也許在真正的7和8 IE瀏覽器中可以正常工作。 你怎么想? 在此處輸入圖片說明

花了很多時間后,我沒有找到解決問題的方法,但是我找到了一種解決方法,可以幫助我在沒有任何iframe的情況下下載IE7,IE8,IE9中的文件,打開新頁面等。這是代碼:

jQuery.download = function(url, data, method){
//url and data options required
if( url && data ){ 
    //data can be string of parameters or array/object
    data = typeof data == 'string' ? data : jQuery.param(data);
    //split params into form inputs
    var inputs = '';
    jQuery.each(data.split('&'), function(){ 
        var pair = this.split('=');
        inputs+='<input type="hidden" name="'+ pair[0] +'" value="'+ pair[1] +'" />'; 
    });
    //send request
    jQuery('<form action="'+ url +'" method="'+ (method||'post') +'">'+inputs+'</form>')
    .appendTo('body').submit().remove();
};
};
$.download('/export.php','filename=mySpreadsheet&format=xls&content=' + spreadsheetData );

也許這將很有用,並為某些人節省時間;)這是用於請求類似Ajax的文件下載的jQuery插件的完整詳細信息

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM