I have a submit form using POST
method, without a submit button.
<form action="" method="post" id="submit_cookie_form">
<input type="hidden" name="lang" value="" id="cookie_form">
</form>
My goal:
[*3] => When I use submit()
as follows to [*3], the page is being reloaded forever. It seems like the form is being submitted forever. Why does this happen, and how can I fix the code?
[*4] => Why does php only receive 'en'
value? Although, value attribute of <input type="hidden" name="lang" value="" id="cookie_form">
perfectly recieves 'en'
and 'jp'
according to user's clicks on the webpage. How can I fix this?
let latestCookie;
$(document).on('ready', function(){
if (localStorage.getItem("language") === null || localStorage.getItem("language") === flag.en){
document.cookie = "language=en";
} else if (localStorage.getItem("language") === flag.jp){
document.cookie = "language=jp";
}
latestCookie = getCookieValue('language');
document.getElementById('cookie_form').value = latestCookie; //[*1]
setLang(latestCookie); //[*2]
})
$('#cookie_form').change(function(){
$('#submit_cookie_form').submit(); }); //[*3]
function setLang(chosenLang){
$('#cookie_form').val(chosenLang).trigger('change');
}
<?php
if(isset($_POST['lang'])){
$lang=$_POST['lang']; //[*4]
echo $lang;
}
else{
echo $lang;
}
?>
$('.dropdown-menu a img').on('click', function(){
let flag = $(this).attr('src');
$('#selected').attr('src', flag);
let key = $('#selected').attr('src');
localStorage.setItem("language", key);
refreshPage(key);
});
function refreshPage(key){
window.location.href = '<php echo $_SERVER[\'PHP_SELF\']."?lang="; ?>'+key;
}
then in PHP you can get in GET method as a querystring.
<?php
if(isset($_REQUEST['lang'])){
$lang=$_REQUEST['lang']; //[*4]
echo $lang;
}
else{
echo $lang;
}
?>