POST不使用表单,然后下载文件

时间:2014-11-12 15:23:43

标签: php ajax

我正在使用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 个答案:

答案 0 :(得分:1)

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

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

第2步:使用PHP& amp;生成服务器上的文件返回文件名

步骤3:在ajax成功回调中,只需使用location.href='<PATH_TO_PHP_TO_DOWNLOAD_FILE>?filename=fname' //&lt; - fname是在ajax成功回调中返回的文件名

第4步:另一个PHP文件将为您下载该文件&amp;将在浏览器上发送后删除它。