PHP-Ajax强制下载

时间:2012-02-19 21:53:39

标签: php ajax

我试图通过将数据数组保存到文件来允许用户保存进度。我知道我可以通过更改标题来强制执行php下载,但我使用ajax调用调用php脚本需要响应以重新启用按钮。我首先需要禁用按钮的原因是jquery已经收集大量数据发送到脚本,需要几秒钟的时间。我在下面发布了我的代码,只保存了一个本地文件。理想情况下,我只想要一个“保存到”对话框,让ajax知道它就好了。

那么我可以强制下载并仍然回显json数据响应吗?

再次感谢你, 托德

require_once('../FirePHPCore/fb.php');
session_start();

/* Initialize an ajax pessimistic response object. */
$ResponseData = array
(
    'Success' => false,
    'Message' => 'There was an error saving your chart right now. Please try again later.'
);

// assemble the final array to save to disk 
$finalArray                   = array();
$finalArray['colorChart']     = $_POST['colorChart'];
$finalArray['threadBrand']    = $_POST['threadBrand'];
$finalArray['chartName']      = $_POST['chartName'];
$finalArray['stitchChart']    = $_POST['stitchChart'];

file_put_contents('array.txt', serialize($finalArray));

$ResponseData['Success'] = true;
$ResponseData['Message'] = 'Saved.';
/* Output the response data in JSON. */
echo json_encode($ResponseData);

1 个答案:

答案 0 :(得分:1)

您的AJAX调用可以让PHP准备要下载的文件,然后返回临时文件的文件名。

然后,JavaScript可以将浏览器重定向到临时文件。如果设置了适当的标题,则将下载文件并保持浏览器窗口不变。