У меня есть флажок, подобный ios, используя состояние, в котором я хочу изменить язык своего веб-сайта. Я использую этот код: langchange.js
$(document).ready(function(){
$("#langfct").change(function() {
if($(this).is(":checked")) {
$.ajax({
url: 'langfunc.php',
type: 'POST',
data: { langstate: "fr" }
});
alert('fr');
window.location.reload();
} else {
$.ajax({
url: 'langfunc.php',
type: 'POST',
data: { langstate: "en" }
});
alert('en');
window.location.reload();
}
});
});
langfunc.php
<?php
session_start ();
$valang = $_POST['langstate'];
$lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
if ($valang == fr){
include("french.php");
}elseif ($valang == en) {
include("english.php");
} else{
switch ($lang){
case "fr":
//echo "PAGE FR";
include("french.php");//include check session FR
break;
case "en":
//echo "PAGE EN";
include("english.php");
break;
default:
//echo "PAGE EN - Setting Default";
include("english.php");//include EN in all other cases of different lang detection
break;
}
}
?>
Как я могу использовать состояние флажка, сохранить langstate и перезагрузить данные? Спасибо
Перестройте код, как показано ниже. Проблема в том, что вы перезагружаете страницу до завершения ajax, и, возможно, ajax даже не может быть отправлен из-за предупреждения блокировки.
var lang = 'en'; //default
if($(this).is(":checked")) {
lang = 'fr';
}
$.ajax({
url: 'langfunc.php',
type: 'POST',
data: { langstate: lang },
success: function() {
alert(lang);
window.location.reload();
}
});