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

标签 javascript java ajax get

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

最佳答案

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

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

<小时/>

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

关于javascript - 使用 window.open(url ,"_self") 打开下载窗口,但不打开 GET 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33786773/

相关文章:

javascript - 在滚动条上增加绝对顶部位置

javascript - Immutable.js或Lazy.js是否执行捷径融合?

javascript - 如何在ngx-pagination中进行过滤

ajax - 使用 AngularJS ajax 将数据发布到 sails.js 后端的 API

jQuery ajax 检查 URL 数据

javascript - 通过 AJAX 发送 canvas.toDataUrl() 到 php

java - 转义字符串中的多个不同字符

java - 在java中验证URL

java - 我的选择排序代码在一个索引上失败

javascript - 我的 Ajax 不工作