【问题标题】:Saving dynamically requested data clientside保存动态请求的数据客户端
【发布时间】:2013-03-02 19:46:25
【问题描述】:

我想从服务器向GET 发出AJAX 请求一些数据。然后我想提示客户将此数据保存在他/她的计算机上,以便以后可以在浏览器会话之外访问。这个保存功能是否可以通过 JavaScript 实现,或者我需要使用 Flash 库吗?我可以使用 URI 在本地执行此操作吗?我可以使用 HTML5 的本地存储吗?

【问题讨论】:

标签: javascript ajax html save client-side


【解决方案1】:

一旦数据在客户端,如果没有像 Flash 这样的插件,Javascript 就无法将其保存在本地。 HTML5 有download 属性,可以解决所有这些问题,但它对[2013-03-02] 的支持很少。

相反,您可以做的是在客户端上构建数据,然后将数据保存在服务器上作为文件直接作为附件下载。您需要使用 HTTP 标头 Content-Disposition 来执行此操作。

这是一个 PHP 示例。

演示:

服务器:

<?php
header('Content-Type: text/plain');
header('Content-Disposition: attachment; filename=data');

echo $_POST['data'];?>

客户:

<!-- language: lang-html -->

<form action="http://thinkingstiff.com/stackoverflow/download.php" method="POST">
    Data to save: <input name="data" type="text" />
    <button>download</button>
</form>

【讨论】:

  • 我想在服务器上托管几个离散的数据集。客户端可以请求将这些数据集中的一个或多个在客户端组合然后保存。我不想在服务器上保存无限的排列集,也不想让服务器对数据集进行计算繁重的组合操作。正常文件下载的好建议
  • @0xDEADFEED 啊,你的问题是“从服务器获取数据”。相反,在客户端组合并使用 AJAX 发送回服务器以保存并立即下载。这就是在线文字处理器和图像编辑器的工作量。
  • @0xDEADFEED 我更改代码以动态处理客户端数据。
  • 听起来不必要地占用带宽,考虑到数据已经在客户端的 RAM 中,但我离题了...
  • @0xDEADFEED 是的。没有Flash,它很丑。 HTML5 有 download 属性来解决这一切,但它还没有支持。
猜你喜欢
  • 1970-01-01
  • 2022-01-19
  • 2022-01-17
  • 2012-07-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-27
  • 1970-01-01
相关资源
最近更新 更多