【发布时间】:2011-10-08 01:56:24
【问题描述】:
我正在通过更改页面界面语言的下拉菜单向自身提交 php。 在这样做的同时,我正在更新一个存储 HTML 正文 TAG 方向的 cookie:rtl OR ltr。
因此,当 HTML SELECT 标记通过 FORM onChage() 函数调用 将其值提交给 JavaScript 时,Javascript 会重新加载 PHP 页面,在 php 页面的头部有一个 INCLUDE 用于翻译 PHP 页面,当页面被重写时,BODY TAG 的方向 em> 将根据语言进行更新。
嗯,这实际上只是在第二次更改语言时才读取 cookie BODY TAG DIR,因此,身体方向并不总是正确的。
<?php
header('Content-Type: text/html; charset=UTF-8');
include '../dbc.php';
mysql_query("SET NAMES 'UTF8'");
include './includes/getranslation.php';
?>
<html>
<head>
<SCRIPT language=JavaScript>
function reload(form) {
var val=form.langselector.options[form.langselector.options.selectedIndex].value;
SetCookie( 'lang', '' + val);
self.location='login.php';
}
</SCRIPT>
</head>
<body dir='<?php echo $_COOKIE['langdir']; ?>'>
<table width="100%" border="0" cellspacing="0" cellpadding="2" class="main">
<tr> <?php if ($_COOKIE["langdir"] == 'ltr') {
$ddlangalignleftTD = 'right';
$ddlandalignrightTD = 'left';
} else {
$ddlangalignleftTD = 'left';
$ddlandalignrightTD = 'right';
}
?>
<td width="50%" align="<?php echo $ddlangalignleftTD; ?>" valign="center">
<?php echo $headingNamesArr['select_lang']; ?>:
</td>
<td width="50%" align="<?php echo $ddlandalignrightTD; ?>" valign="center">
<form method="post" name="langselectorfrm" action="login.php">
<select name="langselector" onchange="reload(this.form)">
<?php echo '<option value= ''</option>';
?>
</select>
</form>
我想知道为什么它只在第二次提交后才阅读更新的 COOKIE?
希望你能理解......
【问题讨论】: