我有一个使用POST
方法的提交表单,没有提交按钮。
<form action="" method="post" id="submit_cookie_form">
<input type="hidden" name="lang" value="" id="cookie_form">
</form>
我的目标:
- 将值传递给输入隐藏值属性[*1] 设置将值
- 传递给值属性时要执行/触发的代码[*2]
- 将值传递给值属性时提交表单[*3]=>问题
- 将 Javascript 值('en' 或 'jp') 传递给 php 变量。[*4]=>问题
[*3] =>当我按如下方式使用 [*3] submit()
时,页面将永久重新加载。表格似乎永远被提交。为什么会发生这种情况,我该如何修复代码?
[*4] => 为什么 php 只接收'en'
值?虽然,<input type="hidden" name="lang" value="" id="cookie_form">
的价值属性完美地接收'en'
并根据用户在网页上的点击'jp'
。我该如何解决这个问题?
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;
}
然后在 PHP 中,您可以将 GET 方法作为查询字符串获取。
<?php
if(isset($_REQUEST['lang'])){
$lang=$_REQUEST['lang']; //[*4]
echo $lang;
}
else{
echo $lang;
}
?>