2012-07-22 4 views
1

У меня есть вызов ajax (из jquery) на login.php и получить ответ json like - {"response": {"error": "false", "user_id": "141", "name": "as «}}. теперь я хочу перенаправить пользователя на home.php, но не знаю как. будет оценено любое предложение или образец кода.Как перенаправить ответ от json?

Спасибо!

+0

вот мой Аякса по призванию $ .post ("action.php", {электронная почта: адрес электронной почты, пароль: пароль, действие: действие}, функция (ответ) { \t \t \t \t // здесь код \t \t \t \t \t \t \t \t \t}, "json"); ответ имеет идентификатор пользователя (который вошел в систему) теперь я хочу перенаправить пользователя на home.php вместе со своим id.how? – Bharat

ответ

0

Если ваш код работает нормально, и все, что вам нужно, это перенаправить пользователя на новый URL. Используйте этот код JavaScript:

window.location.href = "http://www.google.com.pk"; //whichever URL you want 
0

необходимо проверить ответ и увидеть, есть ли ошибка ?? попробуйте что-то вроде этого:

$.ajax({ 
    url: 'ajax/test.html', 
    dataType: json, 
    success: function(data) { 
     //login success 
     if(!data.response.error){ 
     windown.location='/home.php'; 
     }else{ 
     ... 
     } 
    } 

});

0

Если вы хотите перенаправить с помощью Javascript вы можете использовать следующий код

window.location = "http://www.google.com/"; 

Если вы хотите перенаправить с помощью PHP вы можете использовать следующий код

header('Location: http://www.example.com/'); 
+0

если я пишу $ result = json_decode ($ response); Заголовок ('Location: welcome.php'); поэтому он не перенаправляет на welcome.php, его слишком много времени перенаправляет, как я могу решить этот –

1

В функции, которая потребляет Вход JSON, проверка simpy для значения ответа (или любого другого условия, которое вы хотите), и если совпадение, выполните перенаправление:

$.post("action.php", { email: email, password:pass, action:action }, function(json) 
{ 
    if (json.response.error) 
     $(window.location).attr('href', 'home.php?id=' + json.response.user_id); 
}, 'json'); 

В более общем сценарии вам также необходимо проверить, что login.php действительно возвращается, т. Е. Вы используете обработчик успеха и отказа; обработчик успеха, если JSON существует, если ответ правильно отформатирован, делает свою вещь; все остальные случаи будут перенаправлены на home.php.

Подумайте о том, чтобы добавить диалог, чтобы объяснить пользователю, что именно произошло, и поместить перенаправление места в обработчик отклонения диалога.

Рассмотрите: что весь ваш ответ оказывается внутри словаря, называемого «ответ». Это необязательно и заставляет писать такие вещи, как json.response.error и json.response.user_id вместо json.user_id.

Кроме того, я предполагаю, что логин также сохраняет регистрационную информацию в сеансе; Я бы не доверял перенаправленному id. Если вы это сделали, любой пользователь с FireBug мог бы войти в систему, как и любой другой пользователь с тем же паролем.

// action.php 
// receive parameters 
if ($login_ok) 
{ 
    $_SESSION['user_id'] = $user_id; 
    Header('Content-Type: application/json'); 
    die(json_encode(array(
     'user_id' => $user_id, 
     ... 
    ))); 
} 
// Send along the error 

Тогда вы перенаправлять home.php БЕЗ user_id и home.php восстанавливает user_id от сессии.

+0

вот мой вызов ajax-$.post ("action.php", {email: email, password: pass, action: action}, function (response) {// здесь код \t}, "json"); ответ имеет идентификатор пользователя (который вошел в систему) теперь я хочу перенаправить пользователя на home.php вместе со своим id.how? – Bharat

+0

Отредактировал мой ответ, но ваша архитектура, похоже, имеет уязвимость безопасности. Поэтому я также предложил альтернативу. Надеюсь, это приемлемо. – LSerni

Смежные вопросы