POST не работает в HTML / PHP при определенных обстоятельствах - PullRequest
0 голосов
/ 22 января 2020

У меня есть сложная веб-страница, которая является частью веб-сайта дневника, которым пользуются более 100 пользователей в компании-клиенте. Сайт построен в PHP, а также включает в себя HTML и JavaScript. На этой странице у меня есть несколько вкладок, и каждая вкладка имеет множество кнопок, а также другие элементы управления. Все это прекрасно работало в течение ряда лет, но недавно мы обнаружили проблему, которая материализуется только при определенных обстоятельствах. По сути, на странице есть одна вкладка, где пользователь может настроить список дат, которые необходимо ввести в дневник для определенного типа записи. У нас есть всплывающие календари на этой вкладке, где наши пользователи могут выбирать даты начала и окончания для списка дат. Проблема в том, что когда этот список дат проходит около 180 дат, кнопки для изменения предыдущего / следующего месяца и года просто перестают работать. решить проблему, но я получаю ту же проблему с каждым альтернативным способом, который я пробовал. Кроме того, на мой взгляд, нет никакого смысла в том, что количество дат в списке вызывает проблему, потому что код просто не может знать, сколько дат в списке в точке с изменением года или месяца. , Теперь я дам ключевые биты кода для этого.

код для всплывающего календаря (только кнопка предыдущего года), все это настроено в таблице HTML:

<td colspan='1' align='center'>
  <?php
    $prev_year = $_SESSION['popup_2_year'] - 1;
    echo "<span id='prev_year_point'><img onclick='submitPreviousYearChange(".$prev_year.")' src='../img/left.gif'></img></span>";
  ?>
</td>

Код с домашней страницы сайта (индекс. php) - это только ключевые разделы, взятые из гораздо большего файла. Этот первый бит находится в верхней части файла, перед вставкой любых HTML и т. Д. c.

if (isset($_POST["previous_year"]) && is_numeric($_POST["previous_year"]))
{
  $_SESSION['popup_2_year']--;
  $_SESSION['calendar_popup_2_show'] = true;
}

следующий бит из раздела JavaScript на страницах HTML head section:

<script type='text/javascript'>
  <!--
    function submitPreviousYearChange(prev_year)
    {
      diary_form = document.forms['diary'];

      diary_form_element = diary_form.elements['previous_year'];
      diary_form_element.value = prev_year;

      document.diary.submit();
    }
  -->
</script>

наконец, этот бит находится ближе к концу раздела тела страницы. Это скрытая переменная POST, которая используется для хранения значения «предыдущий год». это значение передается из всплывающего календаря в функцию JavaScript, показанную выше. Функция JavaScript сохраняет значение года в скрытой переменной post, чтобы оно могло использоваться первым битом индекса. php код, показанный выше.

<input type='hidden' name='previous_year' value=''>

Как я уже сказал это все работает нормально, если мы не получим слишком много дат в списке дат. Я понимаю, что это, вероятно, не имеет смысла, но если кто-нибудь может дать мне предложения по его решению, они будут с благодарностью.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...