Ajax и jquery редирект - PullRequest
       1

Ajax и jquery редирект

0 голосов
/ 28 декабря 2011

Привет, ребята, у меня есть скрипт jquery для отправки формы, и в случае успеха он отправляет вывод json обратно.

function subscribe(email, city){
    var email = $('input#email').val();
    var city = $('select#citySelect').val();

    $.ajax({
        url: 'http://www.amazingvouchercodes.co.uk/avc_dev/subscribe/subscribeTo',
        type: 'post',
        data: 'email='+email+'&city='+city,
        dataType: 'json',
        success: function(json){
            window.location.href = json['url'];
            $('#notifications').append('<div class="success">'+json['success']+'</div>');
        }
    }); 
}

Проблема, с которой я столкнулся, заключается в том, что отображается уведомление> Успех json до перенаправления после перенаправления, уведомление не отображается, есть ли способ показать уведомление после перенаправления?

Спасибо, вся помощь приветствуется:)

Джо

Ответы [ 3 ]

0 голосов
/ 28 декабря 2011

Вы говорите, что хотите, чтобы функция успеха вызывала перенаправление, а затем обновляла что-то на странице, на которую вы были перенаправлены?

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

Один из вариантов - добавить переменную строки запроса, чтобы указать следующую страницу для обновления. Такие как:

window.location.href = json['url'] + "?msg=success";

Затем на следующей странице он проверит эту переменную строки запроса и выполнит обновление, если она существует.

На следующей странице вы можете добавить что-то вроде:

function getFromQuery(name){
   if(name=(new RegExp('[?&]'+encodeURIComponent(name)+'=([^&]*)')).exec(location.search))
      return decodeURIComponent(name[1]);
}

if (getFromQuery("msg")=="success")
{
//do your update here
$('#notifications').append('<div class="success">'+json['success']+'</div>');
}
0 голосов
/ 28 декабря 2011

Как предложил AlienWebguy,

Это потому, что вы загружаете новую страницу, поэтому любой JavaScript сбрасывается.

Я думаю, что наилучшим способом было бы установить элемент в макете / заголовке, который отображает сообщения в верхней части экрана (например, как этот сайт уведомляет вас о чем-то на оранжевой панели), если таковые ожидают. Итак, на вашей странице Ajax вы устанавливаете переменную уведомления (сессии / cookie). Затем в следующий раз при загрузке страницы (после перенаправления) макет узнает, что имеется уведомление в ожидании, отображает его в макете / заголовке и очищает его (поэтому он отображается только один раз).

0 голосов
/ 28 декабря 2011

Вам нужно будет сделать что-то вроде window.location.href = json['url'] + "?redirMsg=Foo+Bar"; и на своих страницах проверить, есть ли redirMsg в строке запроса, и если это так, предупредить ваше уведомление.

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