2015-02-04 7 views
0

Я создаю очень простое приложение с Laravel4, и до сих пор мне удалось настроить PHPMailer для работы с формой контакта, пользователи заполняют свои данные и отправляют мне электронное письмо, все работает нормально. После того, как пользователь отправил сообщение успешно, он перенаправляется на главную страницу с помощьюPHPMailer - показать сообщение об успешном завершении после перенаправления

if($m->send()) { 
    header('Location: /path/to/home/'); 
    die(); 
} 

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

У меня есть div с .success класс, сидящий на верхней части моей домашней страницы, абсолютно позиционированный вне поля зрения, с отрицательным значением Y. Я пытался потянув его вниз после того, как на $m->send() так:

if($m->send()) { 
     header('Location: /path/to/home/'); 
     echo "<script type='text/javascript'> 
       $('.success').animate({ 
        top: 0 
       }, 2000); 
       </script>"; 
     die(); 
    } 

но не работал. На самом деле, ничего не происходит после того, как заголовок() имеет какой-либо эффект.

Что я могу сделать?

Спасибо, ребята!

ответ

0

Это простой HTTP-код, когда вы устанавливаете заголовок Location, он говорит браузеру оставить страницу, на которой вы находитесь, и пойти куда-то еще - все, что происходит после этого (как этот маленький фрагмент JS), никогда не дойдет до браузера. Вам нужно поместить этот фрагмент на страницу, на которую вы перенаправляете, а не на эту.

+0

Теперь я понимаю, что ничего не происходит после того, как заголовок() фактически выполнен. Таким образом, я пытаюсь установить '$ _SESSION ['success'] = true' перед заголовком, а затем на главной странице, если это правда, выполните указанный скрипт. Но все равно не повезло ... – Grudges

+0

Возможно, вам нужно будет вызвать 'session_write_close();' и убедитесь, что у вас открыт сеанс. – Synchro

+0

Я открыл сеансы, все работает сейчас. Я точно не нашел идеальное время, чтобы полностью убить сеансы, но на данный момент Im просто не читает данные в конце страниц, где сеанс открыт, например, ' ' – Grudges

0

Я решил проблему после того, как понял, что вы не можете использовать JQuery на документ, прежде чем вы на самом деле связать Jquery LIB в.

Итак, в моем файле конфигурации PHPMailer, я поставил $_SESSION['success'] = true, прежде чем я перенаправлять с header('Location: /path/to/home/'); , а затем, на главной странице, на странице я хотел сообщение об успехе, который будет отображаться, я добавил этот бит кода (после линковки библиотеки Jquery):

<?php 
     if(isset($_SESSION['success']) && $_SESSION['success'] == true) { 
    ?> 
     <script type='text/javascript'> $('.success').animate({top : 0}, 'normal').delay(3000).animate({top : -57}, 'normal');</script> 
    <?php 
     } else { 
      $_SESSION['success'] = false; 
     } 
    ?> 

Я не знаю, если это хорошая практика, но она действительно работает.

У меня также было session_start(); на моей домашней странице (очевидно).

Надеюсь, это поможет любому в той же ситуации!

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