使用Javascript动态保存内容
Save content dynamically with Javascript
我想让我的客户端能够有一个保存对话框来保存我在Javascript中存储的数据。我不能把它们指向一个现有的文件,因为你不能直接用Javascript修改文件系统。
是否有可能直接发送要保存的数据(当然是通过保存对话框)?否则,这将是一个疯狂的漏洞)。我想让我的用户可以在我的网站上创建内容,并能够下载。
您可以使用带有dataUrl的链接来创建一个保存链接:(这需要您使用base64编码您的数据)
var a = document.createElement('a');
a.href = "data:text/plain;base64,"+base64_encode("plop");
a.innerHTML = "save";
document.body.appendChild(a);
可以从http://phpjs.org/functions/base64_encode:358获取base64_encode函数。
用户需要右键单击链接并选择"另存为…"来将文件保存到他们的文件系统中。
可以创建一个保存按钮,然后提供一个下载对话框。通过允许用户再次上传文件并解析其内容,您可以加载应用程序。
有几种方法:
服务器端- 将序列化的表单数据(或其他数据)存储在具有唯一id的数据库中,并将id提供给用户,当他想要加载时,他将提供id,然后您将为他鞭打数据。
- 帐户系统,假设您有帐户系统,您可以将每个表单数据链接到特定的用户。
- 以某种方式序列化数据,并将其作为可下载文件提供给用户,然后当他想要恢复时,他将上传文件,您解析它,并为他显示。
当然,这两种解决方案都需要AJAX解决方案来与服务器通信。
客户端- 如果你的网站是现代的(你不关心旧的浏览器),你可以使用本地存储来保存他的输入在他的计算机上,然后自动加载它从他的内存当他回来。请注意,浏览器支持不是很好,你应该使用Modernizr或类似的东西来测试它。
如何使用服务器会话并基于dialgid和SessionId在那里存储内容?
流动:1. 用户存储信息。session_id dialog_id =2. 用户检索信息。= session_id [dialog_id]
您可以使用json和base64来传输批量和结构信息
我假设您想将数据保存在客户端计算机上的文件中。您不能直接这样做,因为JS无法访问本地文件系统。但是你可以通过服务器来实现。同时你也会的将数据发送到服务器并将其下载到客户端。下载打开通常的"另存为…"对话框,其中客户端可以指定文件名。
一个可能的具体实现使用一个生成POST的表单请求到URL save.php
,传递要保存的数据一个隐藏输入域save_data
。请求的结果为指向一个不可见的<iframe>
。
<form action="save.php" method="post" target="save_target" onsubmit="save();">
<input type="hidden" id="save_data" name="save_data" value="" />
</form>
<iframe id="save_target" name="save_target" src="#"
style="display:none; width:0; height:0; border:0px solid #fff;">
</iframe>
JS函数save()
准备发送的数据:
function save() {
document.getElementById("save_data").value = ...;
return true; // or false if something wrong
};
服务器上的PHP页面save.php
处理POST请求并下载数据:
$data = $_POST['save_data'];
$size = strlen($data);
$contentType = "text/plain"; // MIME type
$defaultName = "x.txt";
header("Content-Type: $contentType");
header("Content-Disposition: attachment; filename=$defaultName");
header("Content-Length: $size");
echo $data;
- 如何自动保存动态生成的HTML SVG元素
- 如何保存动态创建的复选框的更改状态
- 将动态输入表单数据保存到数据库kendoui中
- 如何保存从单击this.nameClass动态设置的本地存储
- 谷歌地图-保存动态地图
- 保存动态生成的jqgrid列
- 如何将动态表单保存到数据库/编辑回表单
- 从动态生成的输入字段中获取下拉列表中的数据,而无需保存值 - jquery
- 保存动态创建的 jQuery 连接可排序列表的顺序
- 我可以使用 html() 保存动态表单而不是遍历 INPUT 吗?
- 使用 jQuery 保存动态添加的内容
- 在页面关闭时保存动态变量
- 使用相同的ng模型保存动态生成的输入网格
- 如何保存动态对象的状态(不包括在html中)
- 在html5的本地存储中保存动态数据
- 保存动态创建的字段时不允许的参数
- 刷新JSP后保存动态添加的标记
- struts2保存动态表对象
- 保存动态创建的内容到服务器&从那里装载
- Extjs保存动态选项卡和渲染他们回到页面加载,是可能的