submit() 重复执行&php 只接收默认值



我有一个使用POST方法的提交表单,没有提交按钮。

<form action="" method="post" id="submit_cookie_form">
   <input type="hidden" name="lang" value="" id="cookie_form">
</form>

我的目标:

  1. 将值传递给输入隐藏值属性[*1]
  2. 设置将值
  3. 传递给值属性时要执行/触发的代码[*2]
  4. 将值传递给值属性时提交表单[*3]=>问题
  5. 将 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;
     }
?>

最新更新