您可以用JSON保护Web应用程序状态URL是这样的:是否最好使用URL中的JSON保存Web应用程序状态?
http://host/?state=[{id:1,selected=true},{id:2,selected=false}]
这是最好?
这样做的一个动机是,如果用户在网页上书签,网页应用程序状态可以在用户下次访问该页面时恢复。
您可以用JSON保护Web应用程序状态URL是这样的:是否最好使用URL中的JSON保存Web应用程序状态?
http://host/?state=[{id:1,selected=true},{id:2,selected=false}]
这是最好?
这样做的一个动机是,如果用户在网页上书签,网页应用程序状态可以在用户下次访问该页面时恢复。
这可能是可行的,但我认为这是有点不好的做法怎么一回事,因为:
我的建议是:为state
创建一个ID绑定到存储在数据库中的JSON (您的网址看起来沿http://host/?state=123
线条更与123
指向某种数据库记录(不,它使URL的交通十分便利之一,但我仍然认为这是由于引用了其他点)更好。
您必须解析JSON字符串以获取所有数据,这可能有点复杂。但是你可以这样做,如果你不想使用它自己的查询字符串(也许这个结构太过简单)。 但请记住:查询字符串的长度有限!
你解决方案很好,我只是f新点为你。
一个问题是URL的长度。不同的浏览器有不同的限制。如果您必须这样做,并且您的网址的长度接近2000个字符,则可能会出现问题。如果您的字段名称占用太多空间,请改为使用固定的字段顺序。省略不需要书签的字段。在极端情况下,请考虑使用gzip算法来压缩您的长URL。然后仅使用URL中合法的字符在base64中重新编码该二进制数据。当您在下次访问时再次解压缩URL时,这会带来一些CPU时间的成本。
另一种方法是将状态信息存储在文件或数据库中。然后,您只能存储在URL中再次查找该信息所需的标识符。
因此,如果我在做一个AJAX请求,我应该发布JSON?然后在服务器端,我应该存储状态并返回状态ID?然后,我可以使用jQuery BBQ将后续URL更新为'http:// host /#state = 123':返回按钮和查询库(http://benalman.com/projects/jquery-bbq-plugin/)? – knut 2010-08-04 08:55:30
啊,是的。忘记那部分。也许是主观的,但我认为发布你的JSON比获取它总是更好。上面的插件看起来像是一个理智的选择(从快速浏览)。 – 2010-08-04 09:03:59
因为“jQuery BBQ利用了HTML5 hashchange事件”而不是所有的浏览器都支持html5,所以只需要注意库。 – 2010-08-04 11:35:15