点击<a> to get new data from PHP</a>后重新加载页面

时间:2013-08-10 08:41:54

标签: php javascript reload multilingual

我正在写一个多语种网络,接下来是逻辑:

  1. 默认情况下,有一个“lang.tmp”文件,默认数据为“eng”。
  2. 当index.php加载时,它从“lang.tmp”获取数据,并从lang.php设置默认语言加载数据:

    include("lang/".file_get_contents("lang.tmp").".php");
    
  3. 如果用户想要更改语言,他会点击用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”地址重新加载页面以获得新类型的语言。

  4. 我试过

    header("Location: index.php"); 
    
  5. 显然它不起作用,因为URL是相同的,所以我收到错误:

    Warning: Cannot modify header information - headers already sent.
    
    1. 我也试过JavaScript:

      $("div #langMenu").click(function() {
              location.reload();
              console.log ("Clicked!");
      }); 
      
    2. 但它也没有用。只有在链接上第二次点击后才能使用新语言重新加载页面,但这不是每个人都需要的))

      在这种情况下,你会非常友好地链接我错了或者重新加载页面的其他选项。

2 个答案:

答案 0 :(得分:1)

  1. header重定向应该有效,该错误意味着文字有 已经显示(您只能在页面时进行该调用 加载,而不是一旦你发送内容)。
  2. 逻辑存在缺陷,因为单个用户将更改语言 整个网站。
  3. 为什么不首先让<a>成为页面的链接?

答案 1 :(得分:0)

尝试

$("div #langBox").on('click',function() { 
     location.reload('true'); //Or window.location.href = window.location.href
     console.log ("Clicked!"); 
});