0

单击处理从服务器下载文件的冷融合页面时,我有一个链接。当我直接在 url 中访问文件时,它可以正常工作,所以我知道该部分正在工作。我的下一步是引入 ajax,以便与用户无缝交互。这是我使用 ajax 调用的事件处理程序(在初始页面加载时调用事件处理程序):

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

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

4

1 回答 1

3

您不能通过 Ajax (XMLHTTPRequest) 触发“另存为”对话框。Ajax 调用将数据从您的服务器返回到您的 javascript 应用程序,这就是使用 Ajax 的全部意义所在。下载文件并将其保存在计算机上只是另一个用例 - 这是“浏览器工作”,而不是您的工作。

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

$('body').append(
    $('<iframe>', { 
        src: 'test.cfm?name=john' 
    }).hide()
);
于 2012-08-23T13:24:26.390 回答