Отправить переменную сеанса из Ajax в PHP

У меня есть 4 кнопки на странице, каждая из которых имеет свою собственную кнопку. Когда кнопка нажата, страница не обновляется и не открывает новую страницу.

Когда нажимается кнопка, я хочу отправить идентификатор этой кнопки через Ajax в файл php в виде сеанса. Каждая из 4 кнопок имеет другой идентификатор (1,2,3,4). Если пользователь нажимает одну кнопку, а затем вторую кнопку и т. Д., Я хочу добавить каждую из этих кнопок в этот сеанс.

Это то, что у меня есть до сих пор:

Jquery:

$(document).ready(function() { $('a[name=add]').click(function(e) { session = $(this).attr('id') $.post('sessions.php', {session:session} ); }); }); 

Так что просто проверяется, была ли нажата кнопка с именем «добавить» (все 4 кнопки имеют это имя), и захватывает идентификатор кнопок и отправляет ее на session.php

PHP:

  <?php session_start(); $_SESSION['ids'] = $_POST['session']; ?> 

Просто создает сеанс.

Проблема, с которой я сталкиваюсь, заключается в том, что сессия PHP получает идентификатор первой нажатой кнопки, и это все. Если нажата другая кнопка, Ajax отправляет идентификатор кнопки, но сеанс сохраняет только идентификатор первой нажатой кнопки.

Как добавить идентификатор следующих кнопок, нажатых на сеанс.

Пример: Если нажата кнопка 1 и 3, мне нужно, чтобы сессия имела идентификаторы 1 и 3.

 session_start(); // prepare $_SESSION['ids'] if ( ! is_array($_SESSION['ids'])) { $_SESSION['ids'] = array(); } // fill $_SESSION['ids'] only with new $_POST['session'] posted if ( ! in_array($_POST['session'], $_SESSION['ids'])) { $_SESSION['ids'][] = $_POST['session']; } 

Это связано с тем, что Jquery рассматривает имя или идентификатор как уникальный. Вот почему ваша функция javascript читает только первую кнопку.

Решение:

Используйте общее имя класса для 4 кнопок. (<a class="sessionclass otherclasses" href="#"> 1 </a>)

Затем измените код jquery:

  $(document).ready(function() { $('a.sessionclass').click(function(e) { session = $(this).attr('id'); $.post('sessions.php', {session:session} ); }); }); 

Теперь ваш php-сеанс должен установить соответствующее значение кнопки при щелчке.

И я согласен с @Lim H. Измените свой PHP-код, как он и предложил.

 <?php session_start(); $id = $_POST['session']); if(!isset($_SESSION['ids'])) { $_SESSION['ids']= array(); } $_SESSION['ids'][$id] = $_POST['session']'; ?> 

Каждый раз, когда выполняется запрос AJAX, ваш идентификатор сеанса получает повторную инициализацию, поэтому в итоге остается только одно значение. Таким образом, вы можете создать массив для идентификаторов сеанса, и каждое новое значение ID будет вставлено в этот массив.