使用Javascript下载fie

使用Javascript下载fie,javascript,ajax,Javascript,Ajax,我在客户端有JSON数组,它在UI中呈现。 用户希望将内容作为文件下载。如何将内容从客户端发送到服务器并作为文件下载 我发现POST Ajax请求不允许我们下载文件。 如何操作?如果内容仅在客户端可用,则必须将其发送到服务器。试着这样做: <a id="download_link">Download</a> 然后使用发送到服务器的数据作为文件内容,在my handler.php中强制下载: // Use equivalent in your server side sc

我在客户端有JSON数组,它在UI中呈现。 用户希望将内容作为文件下载。如何将内容从客户端发送到服务器并作为文件下载

我发现POST Ajax请求不允许我们下载文件。 如何操作?

如果内容仅在客户端可用,则必须将其发送到服务器。试着这样做:

<a id="download_link">Download</a>
然后使用发送到服务器的数据作为文件内容,在
my handler.php
中强制下载:

// Use equivalent in your server side script if not using PHP
$filename = 'download-'.time().'.json';
header('Content-Type: application/octet-stream');
header('Content-Transfer-Encoding: Binary');
header('Content-disposition: attachment; filename="'.$filename.'"'); 
exit($_GET['json']);
使用此方法,不应替换当前窗口,但应启动下载提示,但如果愿意,可以在新窗口中打开


这是一个快速而肮脏的解决方案。请注意,这将允许用户键入任何内容并下载文件。至少应该先验证内容。内容太大也可能会有问题。

相关:JASON是否可以作为单独的文件从服务器访问?它有URL吗?你真的想用JavaScript下载文件吗?还是仅仅强迫浏览器下载资源而不是在浏览器导航到资源时显示资源?apsillers:我想显示涉及服务器端复杂操作的报告。服务器完成作业后,将向客户端发送一个JOSN数组。客户端以某种表格格式显示JSON数据。用户还希望下载CSV和PDF格式的相同数据。在这里,我不想再次执行复杂的操作来下载数据。所以我决定将相同的JSON数组从客户端发送到服务器,并以CSV或PDF格式下载。虽然它应该可以工作,但我觉得这可能是一个糟糕的解决方案,但我无法想象一个不太复杂的好替代方案。期待评论。
// or without jQuery
document.getElementById('download_link').onclick = function(){
   window.location = 'my-handler.php?json=' + myJsonString;
};
// Use equivalent in your server side script if not using PHP
$filename = 'download-'.time().'.json';
header('Content-Type: application/octet-stream');
header('Content-Transfer-Encoding: Binary');
header('Content-disposition: attachment; filename="'.$filename.'"'); 
exit($_GET['json']);