2013-03-21 238 views
0

我需要在ajax请求后下载文件。所以我添加iframe到一个页面,将一些数据发布到webmethod和get文件。下面是javascript代码什么位于按钮单击处理程序:Javascript iFrame添加到下载文件在IE7和IE8中

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这一个工程知府! 我的代码有什么问题?

编辑︰我更多地学习这个问题,也许这个问题导致我测试不同IE版本在IE9中改变像图片的值。模式更改是否会导致此问题?也许它在真正的7和8个IE浏览器中工作正常。你怎么想? enter image description here

回答

1

花费了大量的时间后,我没有找到我的问题的解决方案,但我发现了一些变通的办法,帮我下载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); 

也许这将是有益的和节省时间的人;) 这里充满细节jQuery Plugin for Requesting Ajax-like File Downloads