当我单击客户端上的按钮时,我想使用 AJAX 在服务器端调用公共静态 Web 方法。静态方法将创建适当的文件。创建文件后,我需要将其下载到客户端桌面。我找到了John Culvinar 的 jquery 文件下载插件但到目前为止还未能实施。我知道使用这个插件还需要写一个cookie,这样它就知道下载完成了。我应该把这段代码放在服务器端哪里?创建文件后?如果有人能给我展示这个场景的示例,我会很高兴,也许在jsfiddle.net
我建议用隐藏的 iframe 替换您的 ajax 请求,然后当您的服务器返回所述文件时,它会自动要求用户下载它。
//name of iframe
var strName = ("uploader" + (new Date()).getTime());
// the iframe
var jFrame = $( "<iframe name=\"" + strName + "\" src=\"about:blank\" />" ).css( "display", "none" );
jFrame.load(function( objEvent ){
// at this point the user should have been asked to download a file.
// Remove the iFrame from the document.
// Because FireFox has some issues with
// "Infinite thinking", let's put a small
// delay on the frame removal.
setTimeout(function(){
jFrame.remove();
},100);
});
var form = $('<form>').attr( "action", "upload_act.cfm" )
.attr( "method", "post" )
.attr( "enctype", "multipart/form-data" )
.attr( "encoding", "multipart/form-data" )
.attr( "target", strName );
form.append('<input type="hidden" name="somename">').val("someval");
$( "body:first" ).append( jFrame, form );
(以上代码原文改编自http://www.bennadel.com/blog/1244-ColdFusion-jQuery-And-AJAX-File-Upload-Demo.htm)
另一种选择是使其成为一个两步过程。步骤 1 生成文件并返回 url,步骤 2 用户单击下载(这将是指向所述 url 的锚标记)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)