0

我尝试用 ajax 帖子替换允许更改网站语言的 html 表单。表单根据 POST 方法提交数据,只是所选语言的值,然后我通过 php 在 Session-Variable 中设置这个值。

HTML代码:

<form target="_self" method="post" action="Home.php">
<button type="submit" name="language" value="deutsch"> <img src="Germany.png" /></button>
<button type="submit" name="language" value="englisch"> <img src="USA.png" /></button>
</form>

和 PHP 代码:

<?php 
if(isset($_POST['language']))
{$_SESSION['language'] = $_POST['language'];
};
if(!isset($_SESSION['language'])){
$_SESSION['language'] = 'deutsch';}
if($_SESSION['language'] == 'deutsch')
{require('../deutsch.php');
}
elseif($_SESSION['language'] == 'englisch')
{require('../englisch.php');
} 

上面的代码运行良好,并且通过单击图像可以更改语言。现在我尝试在图像上使用 ajax 帖子作为 onclick 功能。该函数触发,但我不知道如何编写 ajax 帖子。我试过了:

    $.ajax({
    type: "POST",
    url: "window.location.pathname",
    data: "language=deutsch",
    });

但是语言并没有改变。我的错误在哪里?PHP-Code 应该和我想的一样。

4

1 回答 1

1

这里有三个主要问题:

  • 请求路径错误。URL 应该是window.location.pathname(不带引号)。

  • 你还没有初始化会话;请参阅文档session_start()

  • 尽管您可以向某些设置会话变量的 PHP 文件发送 POST 请求,但您不能在不重新加载页面的情况下重新运行您的 PHP 代码(并包含相关文件),因为 PHP 是服务器端的。

因此,您不能以这种方式使用 AJAX 请求更改语言。可能的解决方案是将 PHP 代码移动到另一个文件,并将其输出作为 AJAX 响应返回:

    $.ajax({
         type: "POST",
         url: window.location.pathname,
         data: "language=deutsch",
         success: function(data) {  // data is response from PHP file
              alert(data);          // you can do whatever you want with it
         }
    });

这是可能的(我的意思是:有效),但不是很干净或有效。坚持同步请求或/并查看一些提供翻译解决方案的框架。

于 2013-10-12T21:47:24.580 回答