在不重新加载页面的情况下更改会话变量
Change session variables without reloading page
所以我的网页有一个 Link remove Advertisment
,它应该从我的网站上删除广告,并记住不要在会话的其余部分展示任何广告。
我的方法首先是控制器中的私有静态变量,可以通过方法设置。
private static boolean Ads = true;
public static void closeAds() {
Logger.debug("Ads removed");
Ads = false;
}
我研究了一下,发现play framework提供的session()
方法可能更合适。
无论如何,我的问题是,我不知道如何在我的 html 页面中调用那些控制器方法,因为每个 HTTP 请求都必须有一个响应,而且我不想重新加载我的页面,我只想设置变量或会话变量。
我认为 Ajax 可能是答案?我还想不出任何办法
Play 在客户端的签名 cookie 中保存会话信息。
所以你有两个选择(我会选择第二个):
1) Ajax 调用以更新 play 的会话数据(因为您不想在客户端用 javascript 修改它,因为它是一个签名的 cookie 并且会破坏东西)
2) 再创建一个cookie保存广告on/off标志,在客户端修改javascript,然后在服务端可以查看这个cookie的值实现广告on/off。这将阻止您进行额外的 ajax 调用。
所以我的网页有一个 Link remove Advertisment
,它应该从我的网站上删除广告,并记住不要在会话的其余部分展示任何广告。
我的方法首先是控制器中的私有静态变量,可以通过方法设置。
private static boolean Ads = true;
public static void closeAds() {
Logger.debug("Ads removed");
Ads = false;
}
我研究了一下,发现play framework提供的session()
方法可能更合适。
无论如何,我的问题是,我不知道如何在我的 html 页面中调用那些控制器方法,因为每个 HTTP 请求都必须有一个响应,而且我不想重新加载我的页面,我只想设置变量或会话变量。
我认为 Ajax 可能是答案?我还想不出任何办法
Play 在客户端的签名 cookie 中保存会话信息。
所以你有两个选择(我会选择第二个):
1) Ajax 调用以更新 play 的会话数据(因为您不想在客户端用 javascript 修改它,因为它是一个签名的 cookie 并且会破坏东西)
2) 再创建一个cookie保存广告on/off标志,在客户端修改javascript,然后在服务端可以查看这个cookie的值实现广告on/off。这将阻止您进行额外的 ajax 调用。