2012-05-10 16 views
0

我正在jquery/php中设计一个简单的棋盘游戏。该板的状态当前以服务器端的数组形式存储在一个php会话变量中。每一回合都会以ajax调用php的方式执行,它执行逻辑来更新这个数组,然后将数组返回给jquery以html形式呈现。我使用php会话变量来实现持久性委员会状态...但我不认为这是好的做法。我甚至无法在多个标签中播放它,因为浏览器将这两个标签视为同一个会话的一部分。我想在数据库中找到除存储板状态以外的解决方案......但如果这是唯一合理的解决方案,请让我知道:)。谢谢!什么是实现数据持久化jquery/php的最佳方式?

+0

这可能是因为您正在使用这两个标签相同的变量名;尝试使用$ _SESSION ['game_tab1']和$ _SESSION ['game_tab2'],..基本上附加一个引用标签 –

+0

如果使用会话,我想为每个游戏的实例单独会话,而不是存储在同一个会话中游戏的所有实例 – valen

回答

1

Lawnchair这样的javascript库如何在客户端存储数据?

在默认情况下,lawnchair将持续使用DOM存储,但如果其他适配器可以和DOM 存储不是由当前正在执行的JavaScript运行支持。 lawnchair将尝试每个 连续适配器,直到找到一个适用的适配器。简单。

它Dom存储横跨标签以及。

通过Dive.Into.Javascript

存储在本地存储区中的数据不会过期,跨度进行的跨不同的标签和/或Windows

0

您可以使用JavaScript将数据存储在客户端。在隐藏字段或使用机制,无论是地方像jquery data这样的:

$('body').data('player1-pos-x', x); 
$('body').data('player1-pos-y', y); 

与它的问题是,当你刷新浏览器,一切都失去了。

另一种方式是在服务器端和客户端存储数据。你可以存储一个游戏ID,会话ID对在同一个会话下分组游戏。当浏览器刷新时,您将拥有该会话涉及的所有游戏并对数据做出决定。

+0

如果用户打开一个新选项卡,该怎么办?这不会和浏览器刷新一样吗?客户端字段将是空的(就像刷新)..但会话数据将填充?打开很多标签会导致在每个标签中加载相同的游戏不是吗? – valen

+0

您打开一个选项卡并将游戏ID设置为空,然后决定是否创建新游戏或加载与相同会话ID关联的现有游戏。您需要使用ajax在服务器端查询游戏ID列表或创建新的游戏ID,然后根据需要加载相关数据。这样你可以有多个选项卡打开不同的游戏。请记住,这会使系统相对复杂,就好像加载相同的游戏可能导致需要处理的冲突一样,并且每个移动的玩家都需要存储在客户端和服务器端 –

相关问题