2012-08-23 61 views
0

点击时我有一个链接处理从服务器下载文件的coldfusion页面。当我直接在URL中访问文件时,它的工作原理应该如此,所以我知道该部分正在工作。我的下一步是介绍ajax,以便交互对用户无缝。这是我的事件处理程序Ajax调用(事件处理函数在初始页面加载):用jquery和coldfusion下载ajax文件

function fileHandler(){ 
    $('#attachment').click(function(e){ 
     e.preventDefault(); 
     $.ajax({ 
      type:"get", 
      url:"test.cfm", 
      data:{name:"john"} 
     }); 
    }); 
} 

但我什么也没得到。这是我第一次使用jQuery的.ajax()。我通常使用.get()和.load()。我检查了文档,我的语法显示正确。有没有人看到为什么我不能让浏览器提示保存文件的问题?谢谢!

回答

3

通过Ajax(XMLHTTPRequest)不能触发“另存为”对话框。 Ajax调用将服务器中的数据返回给您的JavaScript应用程序,这就是关于使用Ajax的关键。下载文件并将其保存在计算机上只是另一个用例 - 这是一个“浏览器作业”,不是你的。

我解决了“问题”,通过在页面上添加一个隐藏的iframe,这将触发“另存为...”对话框,用户不会注意到它。这就像在另一个标签中打开地址一样,只是它隐藏了。

$('body').append(
    $('<iframe>', { 
     src: 'test.cfm?name=john' 
    }).hide() 
); 
+0

谢谢您的回答!有没有文件解释为什么这是?另外,这意味着一个表单提交,是否正确?我已经有我的表单在其他地方提交:/ –

+0

我也已经在页面上有一个iframe。以这种方式选择一个元素会移动iframe,并且不克隆它?我不能那样做。如果我选择了我已经拥有的iframe,并设置了src属性,那么它能起作用吗? –

+0

刚刚尝试过,它工作。谢谢你的帮助! –