当前位置: 首页 > 面试题库 >

JavaScript使用ajax请求下载文件

咸正平
2023-03-14
问题内容

当我单击按钮时,我想发送“ ajax下载请求”,因此我尝试了这种方式:

javascript:

var xhr = new XMLHttpRequest();
xhr.open("GET", "download.php");
xhr.send();

download.php:

<?
header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-Disposition: attachment; filename= file.txt");
header("Content-Transfer-Encoding: binary");    
readfile("file.txt");
?>

但是没有按预期工作,我该怎么办?先感谢您


问题答案:

进入HTML5场景的是download属性。它支持在Firefox和Chrome,并很快来到IE11。根据您的需求,window.location只要您要下载的文件与您的网站位于同一来源,就可以使用它代替AJAX请求(或使用)。

您始终可以window.location通过使用一些JavaScript来测试是否download支持AJAX请求/回退,如果不支持,则将其切换为call window.location

原始答案

由于您实际上必须导航至文件以提示下载,因此您无法让AJAX请求打开下载提示。相反,您可以使用成功函数来导航到download.php。这将打开下载提示,但不会更改当前页面。

$.ajax({
    url: 'download.php',
    type: 'POST',
    success: function() {
        window.location = 'download.php';
    }
});

即使这回答了问题,还是最好只使用window.location并完全避免AJAX请求。



 类似资料:
  • 问题内容: 我想在单击按钮时发送“ ajax下载请求”,所以我尝试了这种方式: javascript: download.php: 但是没有按预期工作,我该怎么办?先感谢您 问题答案: 2015年4月27日更新 进入HTML5场景的是download属性。它支持在Firefox和Chrome,并很快来到IE11。根据您的需求,只要您要下载的文件与您的网站位于同一来源,就可以使用它代替AJAX请求(

  • 在我们的应用程序中,我们需要实现以下场景: 从客户端发送请求 服务器处理请求并生成文件 服务器返回文件作为响应 客户端浏览器显示文件下载弹出对话框,允许用户下载文件 我们的应用程序是基于ajax的应用程序,因此发送ajax请求(如使用jquery.ajax()函数)将非常简单方便。 但是在googilng之后,事实证明文件下载只有在使用非ajax POST请求时才是可能的(就像在这个流行的SO线程

  • 问题内容: 我想知道是否可以对特定网址进行ajax发布请求,并且仅应要求在数据中接收zip文件?还是我必须发送两个请求…一个,是为了使已创建的服务器内的zip文件的URL成为另一个,而另一个要下载该zip文件? 问题答案: 本机答案是否定的! 但是你可以这样做。 您的ajax请求: 您的php文件:

  • 问题内容: 在我们的应用程序中,我们需要实现以下场景: 客户发送请求 服务器处理请求并生成文件 服务器返回文件作为响应 客户端浏览器显示文件下载弹出对话框,并允许用户下载文件 我们的应用程序是基于ajax的应用程序,因此对于我们来说,发送ajax请求(就像使用jquery.ajax()function一样)非常容易和方便。 但是在googilng之后,事实证明只有在使用非ajaxPOST请求时才可

  • 问题内容: 在我们的应用程序中,我们需要实现以下场景: 客户端发送请求 服务器处理请求并生成文件 服务器返回文件作为响应 客户端浏览器显示文件下载弹出对话框,并允许用户下载文件 我们的应用程序是基于ajax的应用程序,因此对于我们来说,发送ajax请求(就像使用function一样)非常容易和方便。 但是在googilng之后,事实证明只有在使用非ajax POST请求时才可以下载文件(如该流行的

  • 在我的php文件中,我有以下内容来创建一个带有FPDF库的PDF: 但是请求是响应这个,而不是打开一个保存对话框来保存我的PDF。 %PDF-1.3 3 0 obj<>endobj 4 0 obj<>stream x 3 R@2π35 W(çR qπw 3 t04多30 pispéz*[(hx·ääää+çó)·(j*dé7 w endstream endobj 1 0 obj /xobject<