单击<后重新加载页面;a>从PHP获取新数据

Reload page after click on <a> to get new data from PHP

本文关键字:gt 获取 数据 新数据 PHP 加载 lt 新加载 单击      更新时间:2023-09-26

我正在编写一个多语言web,逻辑如下:

  1. 默认情况下,有一个默认数据为"eng"的"lang.tmp"文件
  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);
        }
    

    所以!问题是:在重写"lang.tmp"文件后,我需要用相同的"index.php"地址重新加载页面,以获得新类型的语言。

  4. 我试过

    header("Location: index.php"); 
    

显然它不起作用,因为URL是一样的,所以我得到了错误:

Warning: Cannot modify header information - headers already sent.
  1. 我还尝试了JavaScript:

    $("div #langMenu").click(function() {
            location.reload();
            console.log ("Clicked!");
    }); 
    

但它也不起作用。页面只有在第二次点击链接后才重新加载新语言,但这不是每个人都需要的)

你能不能把我错的地方链接起来,或者在这种情况下还有什么其他选项可以重新加载页面。

  1. header重定向应该工作,该错误意味着文本具有已显示(只有当页面加载,而不是在发送内容之后)
  2. 这种逻辑是有缺陷的,因为一个用户就会改变语言整个网站
  3. 为什么不首先将<a>作为页面的链接呢

像一样尝试

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