Вам нужно вызвать session_start();
в вашей программе php, прежде чем выводить что-либо на страницу, которая использует или задает какие-либо переменные сеанса.Это позволяет сохранять их в диспетчере сеансов и отправляет cookie в браузер вашего пользователя, идентифицирующий сеанс.В последующих веб-запросах браузер пользователя передает cookie-файл сеанса.
Кроме того, если ваш ajax-запрос направляется в другой домен, чем тот, который обслуживается вашей страницей, вы должны включить его в параметры ajax.
xhrFields: {
withCredentials: true
}
Наконец, браузер не просматривает заголовки Location:
, возвращаемые в ответе на запрос AJAX (только в ответе на странице).Вам нужно обработать этот заголовок самостоятельно в своем коде Javascript.
Что-то вроде этого может помочь вам:
success: function(data, text, request){
document.location.href = request.getResponseHeader('Location');
}
Собрав все это вместе, ваш запрос ajax может выглядеть так ( не отлажено ).
// Call AJAX Method And Specify Its Parameters
$.ajax({
url: "login.php?type=student",
type: "POST",
data: {ID:stdID,Password:stdPass},
dataType:"json",
xhrFields: {
withCredentials: true
},
success: function(data, text, request){
var target = request.getResponseHeader('Location');
alert('About to redirect to ' + target);
document.location.href = target;
},
error: function(data){
$("#std-login-error").html(data.fail);
}
});
Редактировать Вы пытаетесь сделать что-то очень сложное, включая множество движущихся частей: HTML, Javascript, PHP, AJAX,sql, и перенаправление.Замечательно, что вы хотите понять, как это сделать;ты многому научишьсяЕсли вам нужно просто завершить эту задачу, забудьте о ajax и просто опубликуйте форму входа на php.
Если вы хотите, чтобы это работало, вам нужно открыть developer tools нав браузере (на ПК щелкните правой кнопкой мыши / проверьте на любой платформе).
На вкладке Консоль отображается диагностическая информация о ваших страницах.Вы можете поместить console.log(whatever);
строк в ваш Javascript, и они будут отображаться на консоли.
На вкладке Network вы можете видеть запросы и ответы от ваших конечных точек php AJAX, включаязначения заголовка Location и значения cookie.
Вкладка Source является отладчиком.Вы можете установить точки останова в строках Javascript, чтобы вы могли видеть, что происходит.Предложение: установите точки останова в первых строках функций success:
и error:
.
Вы можете получить расширение веб-браузера , например Редактировать этот файл cookie ,чтобы помочь вам проверить файлы cookie, передаваемые в ваш браузер вашими ответами ajax и GET / POST.
Если у вас есть php-сервер на стороне отладчика, это тоже поможет.Об этом можно узнать гораздо больше, чем можно найти в ответе о переполнении стека.