В моем javascript у меня есть некоторые ajax-запросы $.getJSON({...})
для различных действий. У меня есть приложение php, которое обрабатывает эти запросы ajax. Перед обработкой фактического запроса мое приложение сначала проверяет сеанс, и в случае, если пользователь еще не вошел в систему, он отправляет сигнал обновления обратно. Что-то вроде:
if (not logged in) { header('Refresh: 0;'); } else { //process request }
Но клиент фактически не обновляется. Есть ли что-то, что мне не хватает, когда речь идет о запросах AJAX и заголовке обновления HTTP?
Запросы AJAX не влияют на браузер, пока не говорят об этом. Смысл, если я получаю страницу с помощью AJAX, она возвращается, может быть, хранится в переменной, и все. После этого ничего не получается. Вам необходимо проанализировать данные о возврате и действовать соответствующим образом.
В вашем случае вы скорее вернете что-то вроде JSON, попросите клиентскую сторону проанализировать, что означают данные возврата, и действовать соответствующим образом.
я склонен делать что-то вроде:
{ "directives": { //contains directives what to do first before parsing the data "whatToDo" : "redirect" }, "payload" : { //actual page data } }
Таким образом, файл вашего вызова в вашем запросе содержит заголовок ('Refresh: 0;'); ? Поскольку это не имеет никакого эффекта, я бы сделал, если пользователь не выполнил вход в систему с уникальной строкой:
if (not logged in) { echo "NOTLOGGEDIN"; } else { //process request }
а затем в запросе AJAX проверьте, вошли ли они в систему:
$.get("someURL", function(data) { if(data == "NOTLOGGEDIN"){ //Do something } else{ //Display data } });