Intereting Posts
Как редактировать файлы HTML напрямую? Как получить информацию о файле в определенном пути к каталогу, например, тип файла mime и имя файла с помощью функции php? как открыть ссылки google внутри iframe? Каковы преимущества создания хранимых процедур в SQL и MySQL? как преобразовать String time to dateTime format в php? Как создавать собственные правила переписывания журналов года? codeIgniter pagination- не переходит к следующей ссылке результатов поиска PHP GD Jpeg с целевым размером файла Плагин WordPress: как мне избежать «жесткой связи»? Должен ли я использовать экранирование цитат php для одиночных кавычек или использовать двойные кавычки в массивах? PHPUnit: ожидание вызова метода с массивом в качестве аргумента Клон не работает для меня? Как проверить, включен ли mod_rewrite в php? MySql создает или обновляет строку с помощью ip? Как эхо вводить текстовую область с разрывами строк?

Установка PHP $ _SESSION с помощью jQuery

Мне нужно установить переменную PHP $ _SESSION, используя jQuery. Если пользователь нажимает на изображение, я хочу сохранить часть информации, связанную с этим изображением, в качестве переменной сеанса в php.

Я думаю, что могу сделать это, вызвав php-страницу или функцию и добавив эту часть информации в строку запроса.

Есть идеи. Я нашел небольшую помощь через Google.

спасибо микрофон

Вы не можете сделать это через jQuery; вам понадобится комбинация Ajax (которую вы можете сделать с jQuery) и PHP-back-end. Очень простая версия может выглядеть так:

HTML:

<img class="foo" src="img.jpg" /> <img class="foo" src="img2.jpg" /> <img class="foo" src="img3.jpg" /> 

Javascript:

 $("img.foo").onclick(function() { // Get the src of the image var src = $(this).attr("src"); // Send Ajax request to backend.php, with src set as "img" in the POST data $.post("/backend.php", {"img": src}); }); 

PHP (backend.php):

 <?php // do any authentication first, then add POST variable to session $_SESSION['imgsrc'] = $_POST['img']; ?> 

Можете попробовать поставить функцию PHP на другую страницу PHP и использовать вызов AJAX для установки переменной.

Что вы ищете, это jQuery Ajax . А затем просто настройте страницу php для обработки запроса.

Многие ответы здесь касаются того, как, но не почему. Пара ключей / значений PHP $ _SESSION хранится на сервере. Это отличается от файла cookie, который хранится в браузере. Вот почему вы можете получать доступ к значениям в cookie как из PHP, так и из JavaScript. Хуже того, AJAX-запросы из браузера не включают файлы cookie, которые вы установили для веб-сайта. Таким образом, вам нужно будет заставить JavaScript вытащить файл cookie Session ID и включить его в каждый запрос AJAX для того, чтобы сервер мог создавать головы или хвосты. С яркой стороны сессии PHP предназначены для перехода на HTTP GET или POST-переменную, если файлы cookie не отправляются вместе с заголовками HTTP. Я бы рассмотрел некоторые из принципов веб-приложений RESTful и использование шаблонов проектирования, которые являются общими для таких приложений, вместо того, чтобы пытаться манипулировать обработчиком сеанса.

в (backend.php) обязательно включите

session_start ();

-Тейлор http://www.hawkessolutions.com

Я также разработал решение для установки «php session set setter» (похожее на решение Luke Dennis). Но здесь, когда я установил значение моего сеанса, мои потребности были «перескакивают на другой .php-файл». Хорошо, я сделал это, внутри моего кода jquery … Но что-то не совсем сработало …

Моя проблема была легкой:

-После того, как вы «$ .post» ваши значения на небольшой .php-файл, вы должны дождаться некоторого «успешного / неудачного» значения возврата и ТОЛЬКО ПОСЛЕ ЧТЕНИЯ ЭТОЙ УСПЕШНОЙ ЗНАЧЕНИЙ, выполните прыжок. Если вы сразу же перейдете к следующему большому .php-файлу, ваше значение сеанса, возможно, не будет установлено на процессор времени выполнения php-сессий, и вы, вероятно, будете читать «пусто» при выполнении $ _SESSION ["my_var"]; из файла .php адресата.

В моем случае, чтобы исправить эту ситуацию, я изменил код jQuery $ .post следующим образом:

 $.post('set_session_value.php', { key: 'keyname', value: 'myvalue'}, function(ret){ if(ret==0){ window.alert("success!"); location.replace("next_page.php"); } else{ window.alert("error!"); } }); 

Конечно, ваш файл «set_session_value.php» должен возвращать «echo» 0 »; 'или' echo "1"; '(или любые значения успеха, которые могут вам понадобиться).

Приветствую.

Как и ответ Луки, но с GET.

Поместите этот php-код на php-страницу, например. getpage.php:

 <?php $_SESSION['size'] = $_GET['size']; ?> 

Затем вызовите его с помощью сценария jQuery следующим образом:

 $.get( "/getpage.php?size=1"); 

Согласитесь с Федерико. В некоторых случаях вы можете столкнуться с проблемами с помощью POST, хотя не уверены, может ли он быть связан с браузером.

Он работает на firefox, если вы измените onClick () на click () в части javascript.

 $("img.foo").click(function() { // Get the src of the image var src = $(this).attr("src"); // Send Ajax request to backend.php, with src set as "img" in the POST data $.post("/backend.php", {"img": src}); });