jQuery.post () и перенаправить через ajax - PullRequest
1 голос
/ 25 января 2012

Я использую jQuery.post() для отправки данных на сервер, когда сервер отправляет данные обратно клиенту, вызывается обратный вызов post (). Я знаю, что сервер может ответить с полем заголовка перенаправления ("Location").

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

UPDATE: приложил отрывной код я знаю, что метод POST принят сервером, и что сервер отвечает на POST. каким-то образом всегда вызывается error() (кажется, что это происходит даже до того, как ответ будет принят клиентом \ browswer).

что не так?

$(document).ready(function() {  
    $("#loginForm").submit(function() {
        $.ajax({
            type : "POST",
            data : $("#loginForm :input").not("#loginBtn").serialize(),
            url : "http://localhost/auth",
            success : function(data, textStatus, jqXHR) {
                alert("success");
                alert(jqXHR.getResponseHeader("Location"));
            }, 
            error : function(jqXHR, textStatus, errorThrown) {
                alert("error");
            }
        });
    });
});

Ответы [ 3 ]

1 голос
/ 25 января 2012

jquery.post() работает путем выдачи Ajax-запроса. При вызове Ajax PHP-скрипт работает асинхронно (воспринимайте его как фоновый поток). Таким образом, скрипт PHP не может перенаправить браузер клиента. Для этого нужно, чтобы PHP-скрипт отвечал URL-адресом для перенаправления и перенаправлял с помощью javascript.

В вашем обратном вызове POST:

function(data){  //data will be the URL to redirect to, sent back by the PHP script
window.location = data;
}

EDIT

Из документации Jquery по jquery.ajax ()

statusCode (добавлено 1.5) Карта

Default: {}

Карта числовых HTTP-кодов и функций, вызываемых, когда ответ имеет соответствующий код. Например, следующее будет оповещать, когда статус ответа будет 404:

$.ajax({
  statusCode: {
    404: function() {
      alert('page not found');
    }
  }
});

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

0 голосов
/ 03 мая 2013

Пожалуйста, в случае перенаправления получите простой ответ без перенаправления, напечатайте любой флаг, такой как "redirect", и напишите перенаправление на стороне клиента, используя

if(responce == 'redirect')
    window.location = "Your url"

Не перенаправлять на сервер.

Это будет работать.

0 голосов
/ 25 января 2012

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

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