使用window.open(url," _self")打开下载窗口,但不打开GET请求

时间:2015-11-18 17:42:07

标签: javascript java ajax get

据我所知,使用URL打开一个新窗口实质上会发出对该指定URL的GET请求。我有一个URL,当使用window.open()打开时,会触发浏览器下载。但是,当我通过AJAX发出实际的GET请求时,为什么响应不会触发浏览器下载?

1 个答案:

答案 0 :(得分:1)

您只能通过将浏览器选项卡重定向到下载URL来触发浏览器下载,但无法使用AJAX请求执行此操作。

当浏览器(如:浏览器选项卡中加载的当前URL)访问URL时,浏览器负责处理响应。对于文件下载,处理响应的相应操作是显示下载对话框。但是,当您通过AJAX执行GET请求时, 负责处理响应,而不是浏览器。响应可能包含任何数据,并且大多数情况下浏览器甚至不了解该数据的含义。

如果你想要实现的是延迟下载开始(如SourceForge和其他人那样)或者为你显示一个后期下载页面然后开始下载,可以通过重定向到下载后页面来实现,然后在那里启动一个Javascript计时器,然后将浏览器(不仅仅是AJAX,而是window.location)重定向到下载URL。浏览器通常处理此问题的方式,后期下载页面将保持加载状态,您将获得一个下载对话框。