submit () выполняется многократно & php получает только значение по умолчанию - PullRequest
0 голосов
/ 24 декабря 2018

У меня есть форма отправки с использованием метода POST, без кнопки отправки.

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

Моя цель:

  1. Передать значение для ввода атрибута скрытого значения [* 1]
  2. Установить код, который будет выполняться / запускаться при передаче значения в атрибут значения [* 2]
  3. Отправить форму при передаче значения в атрибут значения [* 3] =>ISSUE
  4. Передать значение Javascript ('en' или 'jp') в переменную php.[* 4] => ISSUE

[* 3] => Когда я использую submit(), как указано в [* 3], страница перезагружается навсегда.Кажется, что форма подается навсегда.Почему это происходит и как я могу исправить код?

[* 4] => Почему php получает только значение 'en'?Хотя атрибут value <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;
         }
   ?>

1 Ответ

0 голосов
/ 24 декабря 2018
$('.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;
     }
?>
...