我已经使用 FLEX 一段时间了,并且有一些“状态”声明。对于那些不确定我的意思的人,这就像您可以翻译几个不同的页面,设置当前状态。
现在我想开始Facebook开发,但我不知道如何在我用html创建的页面之间传递。我想使用 javascript 而不是 php 是可能的,但我不知道如何实现。有人可以帮帮我吗?
我想做的一个计划是:
tigger1
State A-------------------->State B
trigger2
State B-------------------->State C
以下示例显示了具有 2 种状态的登录面板:default
用于显示登录表单,Register
用于显示注册表单。当前状态更改由操作触发(在本例中为按Linkbutton
)。主要是,状态所做的是根据用户在每种状态下应该能够执行的操作来显示适当的内容。因此,例如,如果我想做一个付款表单,在用户尝试付款后,如果付款成功完成,我将有一个“Thank_you”状态,而如果付款失败,我将有一个“Try_again”状态“状态。如何使用 php/js 来完成此操作?
login/register panel的代码示例(来自 adobe flex 网站,还可以在链接中找到运行示例和完整代码):
<!-- The Application class states property defines the view states.-->
<s:states>
<s:State name="default"/>
<s:State name="Register"/>
</s:states>
<!-- Set title of the Panel container based on the view state.-->
<s:Panel id="loginPanel"
title="Login" title.Register="Register">
<s:Form id="loginForm">
<s:FormItem label="Username:">
<s:TextInput/>
</s:FormItem>
<s:FormItem label="Password:">
<s:TextInput/>
</s:FormItem>
<s:FormItem id="confirm" label="Confirm:" includeIn="Register">
<!-- Add a TextInput control to the form ONLY for the Register view state. -->
<s:TextInput/>
</s:FormItem>
<s:FormItem>
<!-- Use the LinkButton to change view state.-->
<!-- Set label of the control based on the view state.-->
<mx:LinkButton id="registerLink"
label="Need to Register?"
label.Register="Return to Login"
click="currentState="Register"
click.Register="currentState="default"/>
<s:Button id="loginButton"
label="Login" label.Register="Register"/>
</s:FormItem>
</s:Form>
</s:Panel>
提前致谢
最佳答案
好的,我想我明白你的问题了。 Flex(或 Flash)与持续变量(或状态)一起工作,因为它是一个长期运行的程序,由用户界面的事件控制。
网络编程不是这样的。每个页面都是单独提供的,由一个仅在该请求持续时间内存在的程序提供,因此必须通过使用 cookie 在客户端维护状态。由于服务器经常需要了解用户状态,因此 cookie(如果设置了)由浏览器自动提供给服务器,服务器可以将 cookie 的值与该用户之前做过的事情进行交叉引用。
如果 cookie 值是唯一的,则它可用于交叉引用 session 存储,该 session 存储是仅针对一个用户的一组值。 PHP 在其 $_SESSION
功能中提供了此功能。这本身就是一个很大的主题,因此我建议在网络上搜索“PHP session 示例”(此处和网络上)并使用一些代码。真实的例子将向您展示这一切是如何运作的。
编辑:事实证明状态(变量)和状态(UI 变体)是不同的东西!请参阅评论了解更多详情。
关于php - "States"在 JavaScript 或 PHP 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15210001/