0

我需要在 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();

但是我iframe.append(iForm)在 IE 7 和 8 上遇到了问题。在 IE 9 上,这个工作完美!我的代码有什么问题?

编辑:我更多地了解了这个问题,也许这个问题导致我在 IE9 中测试了不同的 IE 版本,改变了图片中的值。模式更改会导致此问题吗?也许它在真正的 7 和 8 IE 浏览器中工作正常。你怎么想? 在此处输入图像描述

4

1 回答 1

1

花了很多时间后,我没有找到我的问题的解决方案,但我找到了一些解决方法,帮助我在没有任何 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 插件

于 2013-03-22T09:22:34.763 回答