点击时我有一个链接处理从服务器下载文件的coldfusion页面。当我直接在url中访问文件时,它可以正常工作,所以我知道该部分正在工作。我的下一步是介绍ajax,以便与用户无缝交互。这是我的事件处理程序,带有ajax调用(在初始页面加载时调用事件处理程序):
function fileHandler(){
$('#attachment').click(function(e){
e.preventDefault();
$.ajax({
type:"get",
url:"test.cfm",
data:{name:"john"}
});
});
}
但我一无所获。这是我第一次使用jQuery的.ajax()。我通常使用.get()和.load()。我检查了文档,我的语法显示正确。有没有人看到为什么我不能让浏览器提示保存文件的问题?谢谢!
答案 0 :(得分:3)
你无法触发"另存为"对话框通过Ajax(XMLHTTPRequest)。 Ajax调用将数据从服务器返回到您的javascript应用程序,这是关于使用Ajax的重点。下载文件并将其保存在计算机上只是另一个用例 - 这是一个"浏览器工作"而不是你的。
我解决了这个"问题"通过将隐藏的iframe附加到页面,这将触发"另存为..."对话框,用户不会注意到它。这就像在另一个标签中打开一个地址一样,只是隐藏了它。
$('body').append(
$('<iframe>', {
src: 'test.cfm?name=john'
}).hide()
);