我正在jquery/php中设计一个简单的棋盘游戏。该板的状态当前以服务器端的数组形式存储在一个php会话变量中。每一回合都会以ajax调用php的方式执行,它执行逻辑来更新这个数组,然后将数组返回给jquery以html形式呈现。我使用php会话变量来实现持久性委员会状态...但我不认为这是好的做法。我甚至无法在多个标签中播放它,因为浏览器将这两个标签视为同一个会话的一部分。我想在数据库中找到除存储板状态以外的解决方案......但如果这是唯一合理的解决方案,请让我知道:)。谢谢!什么是实现数据持久化jquery/php的最佳方式?
回答
像Lawnchair这样的javascript库如何在客户端存储数据?
在默认情况下,lawnchair将持续使用DOM存储,但如果其他适配器可以和DOM 存储不是由当前正在执行的JavaScript运行支持。 lawnchair将尝试每个 连续适配器,直到找到一个适用的适配器。简单。
它Dom存储横跨标签以及。
存储在本地存储区中的数据不会过期,跨度进行的跨不同的标签和/或Windows
您可以使用JavaScript将数据存储在客户端。在隐藏字段或使用机制,无论是地方像jquery data这样的:
$('body').data('player1-pos-x', x);
$('body').data('player1-pos-y', y);
与它的问题是,当你刷新浏览器,一切都失去了。
另一种方式是在服务器端和客户端存储数据。你可以存储一个游戏ID,会话ID对在同一个会话下分组游戏。当浏览器刷新时,您将拥有该会话涉及的所有游戏并对数据做出决定。
如果用户打开一个新选项卡,该怎么办?这不会和浏览器刷新一样吗?客户端字段将是空的(就像刷新)..但会话数据将填充?打开很多标签会导致在每个标签中加载相同的游戏不是吗? – valen
您打开一个选项卡并将游戏ID设置为空,然后决定是否创建新游戏或加载与相同会话ID关联的现有游戏。您需要使用ajax在服务器端查询游戏ID列表或创建新的游戏ID,然后根据需要加载相关数据。这样你可以有多个选项卡打开不同的游戏。请记住,这会使系统相对复杂,就好像加载相同的游戏可能导致需要处理的冲突一样,并且每个移动的玩家都需要存储在客户端和服务器端 –
- 1. 什么是存储持久对象数组的最佳方式?
- 2. 最好的方式来实现android方向变化时的数据持久性?
- 3. 什么是持久化jQuery可排序列表内容的最佳方式?
- 4. 实现睡眠函数JavaScript的最佳方式是什么?
- 5. 实现变长数组的最佳方式是什么?
- 6. 保持数据库版本的最佳方式是什么?
- 7. 实现数据库同步的最佳方法是什么?
- 8. “TryParse/Parse like”模式:实现它的最佳方式是什么
- 9. 什么是实现Viewholder设计模式的最佳方式。
- 10. JPA初始化数据的最佳方式是什么?
- 11. 实现基于Web的数据浏览器的最佳方式是什么?
- 12. 在Delphi中实现C#的BackgroundWorker的最佳方式是什么?
- 13. 什么是从数据库初始化演员的最佳实践方式
- 14. 用多值属性实现数据库的最佳方式是什么?
- 15. 实现SQL(数据库)监听器的最佳方式是什么?
- 16. 序列化EMF模型实例的最佳方式是什么?
- 17. OwlCarousel2初始化多个实例的最佳方式是什么
- 18. 实例化许多JavaScript对象的最佳方式是什么?
- 19. 在GridView中实现标题支持的最佳方式是什么?
- 20. 实现多个spinners的最佳方式是什么?
- 21. 实现这种结构的最佳方式是什么?
- 22. 在GridView中实现按钮的最佳方式是什么?
- 23. 在PHP中实现控制器的最佳方式是什么?
- 24. 使用MVCGrid.net实现内联DropDownList的最佳方式是什么?
- 25. 在Python中实现“from。import *”的最佳方式是什么?
- 26. 什么是实现web服务登录的最佳方式?
- 27. 什么是实现这种布局的最佳方式?
- 28. 实现颜色循环背景的最佳方式是什么?
- 29. 实现“热门内容”展示的最佳方式是什么?
- 30. 在服务器中实现AutoComplete的最佳方式是什么?
这可能是因为您正在使用这两个标签相同的变量名;尝试使用$ _SESSION ['game_tab1']和$ _SESSION ['game_tab2'],..基本上附加一个引用标签 –
如果使用会话,我想为每个游戏的实例单独会话,而不是存储在同一个会话中游戏的所有实例 – valen