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:
- Pass value to input hidden value attribute[*1]
- Set the code to be executed/triggered when a value is passed to value attribute[*2]
- Submit the form when a value is passed to value attribute[*3]=>ISSUE
- Pass Javascript value('en' or 'jp') to php variable. [*4]=>ISSUE
[*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;
}
?>