У меня есть 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 будет вставлено в этот массив.