我正在写一个多语种网络,接下来是逻辑:
当index.php加载时,它从“lang.tmp”获取数据,并从lang.php设置默认语言加载数据:
include("lang/".file_get_contents("lang.tmp").".php");
如果用户想要更改语言,他会点击用php创建的链接,这会重写“lang.tmp”中的数据:
include("lang/languages.php");
$i=0;
while (list($key, $value) = each($languages))
{
echo '<li class="lang"><a href="index.php?'.$key.'"><div id="langBox">'.$value.'</div></a></li>';
if ($_SERVER['QUERY_STRING'] == $key)
{
$fp=fopen("lang.tmp","w");
fwrite($fp,basename($key));
fclose($fp);
}
SO!问题是:在重写“lang.tmp”文件后,我需要使用相同的“index.php”地址重新加载页面以获得新类型的语言。
我试过
header("Location: index.php");
显然它不起作用,因为URL是相同的,所以我收到错误:
Warning: Cannot modify header information - headers already sent.
我也试过JavaScript:
$("div #langMenu").click(function() {
location.reload();
console.log ("Clicked!");
});
但它也没有用。只有在链接上第二次点击后才能使用新语言重新加载页面,但这不是每个人都需要的))
在这种情况下,你会非常友好地链接我错了或者重新加载页面的其他选项。
答案 0 :(得分:1)
header
重定向应该有效,该错误意味着文字有
已经显示(您只能在页面时进行该调用
加载,而不是一旦你发送内容)。<a>
成为页面的链接?答案 1 :(得分:0)
尝试
$("div #langBox").on('click',function() {
location.reload('true'); //Or window.location.href = window.location.href
console.log ("Clicked!");
});