我正在使用jquery克隆并将一些html附加到div中。
我的问题是刷新页面时会删除此html。问题是如何在div中保存附加的HTML(html代码将包含一些输入和选择列表,并且会有大量代码)。
我应该注意什么?
缓存?
HTML5?
还有别的吗?
答案 0 :(得分:3)
如果您只支持现代浏览器,我会选择HTML5的离线存储。
另一种方法是获得AJAX路线。
你不想为此使用cookies,因为:
每次请求都会加载
cookies只能保存有限数量的信息。
答案 1 :(得分:3)
使用大量的jquery存储插件之一。他们中的许多人使用html5存储,但如果在浏览器中不支持html5存储,它将使用其他技术。例如,使用JQUERY STORAGE插件,您将以这种方式保存数据:
$.Storage.set("name", "value");
并以这种方式恢复它:
$.Storage.get("name");
如果要将代码附加到另一个元素,我建议您保存要附加到存储的相同数据,而不是从文档中选择并获取它(它会更快一些)。
答案 2 :(得分:0)
绝对不要尝试在HTML中存储HTML ...单独的大小限制1不会使它成为一个不错的选择。但是,您可能希望在cookie中保存“标记”,当页面重新呈现时,触发重新插入HTML代码(通过重新调用第一次添加它的函数,或者通过将其拉入通过AJAX。)
但是,我建议您在用户向页面添加内容时对服务器执行AJAX调用。此调用将更新服务器上的对象/数据库,以便在重新加载页面时,它会返回完整内容,包括用户动态添加的部分。
[1] RFC 2109 - section 6.3 (on HTTP Cookies)
4096 bytes per cookie
20 cookies per unique host or domain name
答案 3 :(得分:0)
你可以试试这个功能
<php
function getVar($name, $def = '') {
if (isset($_REQUEST[$name]))
return $_REQUEST[$name];
else
return $def;
}
// check if overrides passed
$efind = getVar('q', '');
?>
输入标记的示例
<input type="text" name="q" onFocus="this.value=''" onBlur="if(this.value == '')this.value ='<?php echo htmlentities($efind); ?>'" value="<?php echo htmlentities($efind); ?>" />
如果我犯了错误,请更正
答案 4 :(得分:0)
Hakan,ajax调用会使你的整页缓存无用(或至少不那么有用),因为你的服务器会再次为每个请求加载php + apache / nginx,这样你几乎不会获得任何性能,或者至少不是一个完整的整页缓存。我们计划完成一个完整的缓存解决方案,并且在第一次尝试时我们考虑使用cookie和会话购物车,询问客户端是否支持cookie并降级为Ajax调用。 告诉我你是否终于得到了解决方案。我打算将nginx和memcache用于整页缓存,并为后端请求使用php + apc + apache + mod_sitespeed