【发布时间】:2013-12-21 05:55:50
【问题描述】:
首先,为这个问题的简单性道歉,但这超出了我的技能水平,我已经完成了我的研究,我不能再盯着它了。
我正在构建一个需要 3 种不同语言(英语、西班牙语和葡萄牙语)的网站,这些语言是通过右侧栏上的“选择”输入来选择的。我有一个显示/隐藏相关 div onchange 的 js 函数,但是当我离开页面时会话变量消失了。我也不确定如何在更改页面时获取保存的显示/隐藏 div 以保持状态。所有页面都使用一个调用 session_start() 的标题模板
选择框码:
<div id="languageSelect">
<?php
$_SESSION['language'] = $_POST['languageDropdown'];
?>
<form method="post" action="<?php echo $PHP_SELF;?>">
<select name="languageDropdown" id="languageDropdown" class="languageDropdown" onchange="selectLanguage();submit();">
<option name="English" value="English" <?php if (($_SESSION['language'] == '') || ($_SESSION['language'] == 'English')) echo 'selected="selected"'; ?>>English</option>
<option name="Español" value="Español" <?php if ($_SESSION['language'] == 'Español') echo 'selected="selected"'; ?>>Español</option>
<option name="Português" value="Português" <?php if ($_SESSION['language'] == 'Português') echo 'selected="selected"'; ?>>Português</option>
</select>
</form>
</div>
Javascript代码sn-p(成功改变当前页面的语言)
function selectLanguage() {
if (document.getElementById('languageDropdown').selectedIndex == 0){
$('#nav-en').show();
$('#content-en').show();
$('#nav-es').hide();
$('#content-es').hide();
$('#nav-pt').hide();
$('#content-pt').hide();
}
我尝试解决问题的方法是在提交会话变量时让选择框保持其选项()然后让 javascript 函数读取在页面加载时仍选择哪个选项并显示/隐藏相关div 的,但还没有这样的运气。
$(function(){
if (document.getElementById('languageDropdown').selectedIndex == 0){
$('#nav-en').show();
$('#content-en').show();
$('#nav-es').hide();
$('#content-es').hide();
$('#nav-pt').hide();
$('#content-pt').hide();
}
if (document.getElementById('languageDropdown').selectedIndex == 1){
$('#nav-en').hide();
$('#content-en').hide();
$('#nav-es').show();
$('#content-es').show();
$('#nav-pt').hide();
$('#content-pt').hide();
}
if (document.getElementById('languageDropdown').selectedIndex == 2){
$('#nav-en').hide();
$('#content-en').hide();
$('#nav-es').hide();
$('#content-es').hide();
$('#nav-pt').show();
$('#content-pt').show();
}
});
我对 php 还很陌生,但我已经完成了我的研究,所以任何帮助都将不胜感激。
【问题讨论】:
-
“会话变量消失”是什么意思?
$_SESSION['language'] = $_POST['languageDropdown']- 也许这一行在不是发布请求时进行评估并将会话变量设置为空? -
@vbo 很抱歉这里含糊不清。我在用于测试会话变量的几页上有回声。 在我换页之前,它会显示“语言为:英语”。此时它恢复为“语言是:”
-
好的。那么会话变量赋值呢?看起来它必须被
if ($_POST)包围。 -
@vbo 你能详细说明一下吗?你是说 if ($_POST) {$_SESSION['language'] = $_POST['languageDropdown'];} 吗?
-
是的。当您更改会话变量时,您的代码中只有一个位置。无论如何尝试调试它何时被调用并分配什么值。
标签: javascript php drop-down-menu session-variables