Загрузка / выгрузка JavaScript для получения переменных PHP $ _SESSION - PullRequest
2 голосов
/ 04 сентября 2011

Я хотел бы, чтобы при загрузке и выгрузке страницы вызывалась функция javascript, которая будет устанавливать и сбрасывать переменную сеанса. В настоящее время javascript (в соответствии с PHP) выглядит следующим образом (использует jQuery)

window.onbeforeunload = function() {
   $.post('Example.php?y=".$id."&dir=0');
} 

$(document).ready(function() {
   $.post('Example.php?y=".$id."&dir=1');
}); 

Они включены в скрипт php, где $ id - это переменная, передаваемая на страницу. Example.php - это скрипт, вызываемый с использованием ajax, который просто добавляет переменную $ id в массив, хранящийся как переменную $ _SESSION, если dir = 1, и удаляет переменную из массива, если dir = 0.

Проблема в том, что это просто ИНОГДА работает как положено. Когда я загружаю страницу, массив сессии всегда корректно обновляется. Когда я выгружаю страницу, иногда она работает, а иногда нет. Я предполагаю, что, поскольку это асинхронные функции, переменная устанавливается вызовом функции .ready ПОСЛЕ разгрузки страницы. Но несоответствие сохраняется, даже если я на некоторое время оставлю страницу, а затем разгрузлю ее. Я что-то не так делаю в функции выгрузки?

  • Пробовал установку ajax: ложь в пост-звонке

  • Попытка с использованием конструкции $(window).unload() jQuery, которая просто не работала.

  • Использование Google Chrome

1 Ответ

1 голос
/ 04 сентября 2011

$. Пост асинхронный; это означает, что когда функция возвращается, запрос все еще может не быть выполнен.

Попробуйте сделать запрос синхронно:

$.ajax('Example.php..', {
    async: false,
    type: 'POST'
});

См. jQuery.ajax документацию.

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