2010-09-03 1 views
0

Надеюсь, вы сможете помочь. Немного jQuery/AJAX newb здесь.SimpleModal PHP форма входа в систему: как перенаправить на успех/неудачу

У меня есть простая форма для входа в систему SimpleModal, которая может быть вызвана с домашней страницы моего сайта.

login.js вызывает скрипт login.php, который проверяет мою базу данных для учетных данных пользователя.

Если регистрация прошла успешно, я установил несколько переменных сеанса, и обычно я использую команду заголовка для отправки пользователя на свою личную страницу (или страницу с ошибкой при неудаче входа).

например. заголовок ("Location: ограниченный/index.php");

Я не могу получить модальную регистрационную форму, чтобы закрыть, а родительскую страницу перенаправить на страницу участника. Я обычно остается пустой модальный квадрат говорят «спасибо»

Если я пытаюсь закрыть модальную форму с

success: function (data) { 
$('#login-container .login-loading').fadeOut(200, function() { 
    $('#login-container .login-title').html('Thank you!'); 
    msg.html(data).fadeIn(200); 
    $.modal.close(); //have inserted this line 
}); 
}, 

модальных закрытий, но я оставил на главной странице. (Пользователь вошел в систему на этом этапе, но перенаправления не произошло).

Я пинал это в течение дня или 2. Я посмотрел плагин для входа в WordPress, но я не мудрее. Есть идеи?

ответ

2

На самом деле редирект вероятно же произошло, это просто случилось внутри просьбе AJAX. Когда вы выполняете перенаправление, XmlHttpRequest, который использует функции ajax, прозрачно следует за ним, поэтому страница, возвращаемая клиенту, - это restricted/index.php. что я, как правило, сделать это добавить заголовок на этой страницы, что-то вроде этого:

header("Redirect:restricted/index.php"); 

Тогда обратите внимание на заголовок, что-то вроде этого с помощью $.ajaxSetup():

$.ajaxSetup({ 
    complete: function (xhr) { 
    var redirect = xhr.getResponseHeader('Redirect'); 
    if(redirect) window.location.href = redirect; 
    } 
}); 

Этот путь (если не вам override complete, он оставляет эту опцию открытой), когда возвращается запрос, который дошел до restricted/index.php (помните, что XmlHttpRequest действительно отправился туда) он получит заголовок, чтобы клиент знал, что ему нужно перенаправить.

+0

Спасибо за ответ. Да, перенаправление действительно происходит за кулисами. Новое для AJAX - трудно понять, что происходит. Итак, теперь у меня есть заголовок> («Перенаправление: ограниченный/индекс.php»); на целевой странице limited/index.php, и теперь у меня есть HTTP-заголовок Redirect. Где я должен поместить функцию ajaxSetup и как ее вызвать. Извините за такой глупый вопрос. У меня есть код страницы с предупреждением> red (redirect) (перенаправление); отлаживая строку в тегах скриптов, но она не работает. Благодаря! – chakotha

+0

@ user438858 - Как насчет * не * перенаправления и вместо отправки другого заголовка клиенту, так что * они * могут перенаправлять, как и у меня выше ... вы просто добавляете этот заголовок, если логин был успешным? –

+0

@ user438858 - Его можно назвать где угодно, только один раз - все, что вам нужно, прежде чем делать какие-либо аякс-запросы. Если запросы ajax имеют свой «полный», вам нужно немного изменить подход, так ли это? –