У меня есть один скрипт PHP с переменной сеанса, заданный так:
$_SESSION['VAR1'] = "test"
Теперь я использую AJAX через инициированный jQuery POST-запрос, поэтому у меня есть сценарий с именем ajax.php
который имеет все необходимые функции.
И когда я пытаюсь получить доступ к своей переменной сеанса ( echo $_SESSION['VAR1']
) в ajax.php, она ничего не производит.
Не работает ли сеанс от запросов AJAX?
Вам нужно сделать это на каждой странице, которая обращается к сеансу перед его доступом:
session_start();
Это означает как на странице, задающей переменную сеанса, так и на странице AJAX, которая пытается ее восстановить. Оба требуют вызова session_start()
.
Пока запрос AJAX вызывает скрипт в том же домене (и таким образом получает доступ к файлу cookie сеанса), нет причин, по которым он не мог получить доступ к переменным сеанса. Запрос AJAX в конце концов – всего лишь еще один HTTP-запрос.
Убедитесь, что имена доменов для обеих страниц (например, контейнер AJAX и сценарий AJAX одинаковы). Вот пример:
http://mydomain.com/login.php (set session variables here) http://mydomain.com/ajax-container.php (session variables are visible here) http://mydomain.com/ajax-script.php (session variables are visible here) http://www.mydomain.com/ajax-script.php (session variables are NOT visible here)
Еще один:
http://www.mydomain.com/login.php (set session variables here) http://www.mydomain.com/ajax-container.php (session variables are visible here) http://www.mydomain.com/ajax-script.php (session variables are visible here) http://mydomain.com/ajax-script.php (session variables are NOT visible here)
Я также поймал себя на том, что у меня было одно маленькое, крошечное, труднодоступное место перед «<? Php». Это привело к отправке информации и запрету начать сеанс, поскольку уже была отправлена информация заголовка. Может быть, и не для кого-то другого, но это подтолкнуло меня и привело на эту страницу в поисках ответа.
Перед вызовом session_start () убедитесь, что ни один контент не был эхом (даже без пробелов).
Чтобы быть в безопасности, поместите код в качестве первого кода любого шаблона, который вы использовали для этой страницы. Функция не будет работать, если контент отправлен в браузер.
Чтобы проверить и увидеть, где проблема, вызовите страницу как автономную, а не через AJAX и убедитесь, что она работает до AJAXing.
Добавление к тому, что написал Салман А:
Если вы установите переменную сеанса в файле https: // и попытаетесь получить к ней доступ с http: // файлом, вы не сможете …
https://www.example.com/index.php - call session_start() and set session variable http://ww.example.com/index_tmp.php - unable to access session variable
и наоборот…
http://www.example.com/index.php - call session_start() and set session variable https://ww.example.com/index_tmp.php - unable to access session variable
Скорее:
https://www.example.com/index.php - call session_start() and set session variable https://ww.example.com/index_tmp.php - Able to access session variable
А также:
http://www.example.com/index.php - call session_start() and set session variable http://ww.example.com/index_tmp.php - Able to access session variable
Моя собственная ошибка была символом спецификации в моем файле ajax. Мне нужно было использовать переменную сеанса в ajax, вызванном php-файлом. Я попытался запустить сеанс session_start (), но «не может изменять информацию заголовка». Я удалил код спецификации и код очень хорошо.
В jQuery или JavaScript вы можете получить значение сеанса следующим образом:
var StepIndexval = '<%= Session["StepIndex"].ToString() %>'; alert(StepIndexval);