在不使用表单的情况下开机自检,然后下载文件


POST without using forms, then download file

我正在使用ajax来POST,但AJAX不会触发文件下载。

我需要在不使用表单的情况下进行 POST,因为我使用的是页面上许多元素的值,所以我做了一个 javascript 函数来获取这些值并创建一个数组,然后 POST 到 php 目标文件。

如何在不使用表单提交的情况下发布这些值并触发下载文件,而是收集元素值并将其发送到目标 php 页面?


Javascript 解析内容并创建一个值数组,并发布到 PHP:

['Jordan','22','Male','Other Info']

PHP 文件使用该数组将这些值插入到 DOCX(文档)中,然后返回下载 URL,请注意该文件不会保存在服务器中。

这是 ajax POST 的答案:

Access-Control-Allow-Origin:*
Cache-Control:max-age=0, no-cache, no-store, must-revalidate
Connection:Keep-Alive
Content-Description:File Transfer
Content-Disposition:attachment; filename="modelos/calculos/tempo_contribuicao_2014-11-12.docx"
Content-Length:18943
Content-Transfer-Encoding:binary
Content-Type:application/vnd.openxmlformats-officedocument.wordprocessingml.document
Date:Wed, 12 Nov 2014 15:57:39 GMT
Expires:Wed, 11 Jan 1984 05:00:00 GMT
Keep-Alive:timeout=15, max=98
Pragma:no-cache
Server:Apache/2.0.63 (FreeBSD) PHP/5.2.6 with Suhosin-Patch
Vary:User-Agent
X-Powered-By:PHP/5.2.6

您可以使用以下方法实现相同的目标:

第 1 步:首先,发送 Ajax 请求以将参数发布到服务器

第 2 步:使用 PHP 在服务器上生成文件并返回文件名

第 3 步:在 ajax 成功回调中

,只需使用 location.href='<PATH_TO_PHP_TO_DOWNLOAD_FILE>?filename=fname'//<-- fname 是 ajax 成功回调中返回的文件名

步骤4:另一个PHP文件将为您下载该文件,并在浏览器上发送后将其删除。