Редирект из простой формы

Тема в разделе "Как сделать...", создана пользователем grebovich, 16 ноя 2015.

  1. grebovich

    grebovich Нарушитель

    Регистр.:
    19 мар 2012
    Сообщения:
    290
    Симпатии:
    56
    Здравствуйте!
    Помогите пожалуйста с формой...
    Создал на генераторе одностраничник
    , перенес его на свой домен, подключил отправку почты , в которой так же подключил редирект, но какая то зараза в JS блокирует редирект и он не срабатывает и хоть ты стрельнись...
    Почта отправляется а вот редирект не хочет...
    Заранее огромная благодарность.

    Обработчик почты сделал так:
    Код:
    <?php
    /* Здесь проверяется существование переменных */
    if (isset($_POST['phone'])) {$phone = $_POST['phone'];}
    if (isset($_POST['name'])) {$name = $_POST['name'];}
    if (isset($_POST['email'])) {$email = $_POST['email'];}
    if (isset($_POST['theme'])) {$theme = $_POST['theme'];}
    if (isset($_POST['skype'])) {$skype = $_POST['skype'];}
    
    /* Сюда впишите свою эл. почту */
    $address = "88282828289@yandex.ua";
    
    /* А здесь прописывается текст сообщения, \n - перенос строки */
    $mes = "\nИмя: $name \nТелефон: $phone \nСкайп: $skype \nE-mail: $email \nФорма: $theme";
    
    /* А эта функция как раз занимается отправкой письма на указанный вами email */
    $sub='Новый заказ с сайта Engless'; //сабж
    $email='88282828289@yandex.ua'; // от кого
    $send = mail ($address,$sub,$mes,"Content-type:text/plain; charset = utf-8\r\nFrom:$email");
    
    header('Location: /thank-you.html');
    ?>
     
  2. ZiX

    ZiX Коддинг, Парсинг

    Moderator
    Регистр.:
    9 июл 2011
    Сообщения:
    1.378
    Симпатии:
    562
    попробуй полный адрес ссылки.
    Проверь параметр
    output_buffering =On
    php.ini
    гдето читал, что он как-то влияет...
     
  3. grebovich

    grebovich Нарушитель

    Регистр.:
    19 мар 2012
    Сообщения:
    290
    Симпатии:
    56
    К сожалению ни один из указанных методов так же ефекта не дал
     
  4. Q_BASIC

    Q_BASIC

    Регистр.:
    30 ноя 2013
    Сообщения:
    352
    Симпатии:
    223
    У Вас Ajax, так не будет работать:
    Код:
    var a = $.ajax({
                url: this.$form.attr("action"),
                type: "POST",
                dataType: "json",
                processData: false,
                contentType: false,
                data: b,
                xhr: $.proxy(function () {
                    var c = $.ajaxSettings.xhr();
                    if (c.upload) {}
                    return c
                }, this)
            });
            a.done($.proxy(function (c) {
                setTimeout($.proxy(function () {
                    this.$form.parent().parent().addClass("submit-ok step-1");
                    setTimeout($.proxy(function () {
                        this.$form.parent().parent().addClass("submit-ok step-2");
                        setTimeout($.proxy(function () {
                            this.$form.parent().parent().addClass("submit-ok step-3");
                            setTimeout($.proxy(function () {
                                this.$form.parent().parent().removeClass("submitting submit-ok step-1 step-2 step-3");
                                this.$form.get(0).reset();
                                c.send_formdata = true;
                                if (typeof c.pay !== "undefined") {
                                    this.pay = c.pay
                                }
                                this.show_done()
                            }, this), 1000)
                        }, this), 300)
                    }, this), 400)
                }, this), 500)
            }, this));
            a.fail($.proxy(function (c) {
                this.$form.parent().parent().removeClass("submitting")
            }, this))

    Вызывает AJAX это:
    Код:
    this.$form.find(".form_field_submit").on("click", $.proxy(function () {
                this.$form.submit()
            }, this));
            this.$form.on("submit", $.proxy(function (b) {
                if (!this.validation()) {
                    return false
                }
                if (typeof (FormData) !== "undefined") {
                    this.send_formdata()
                } else {
                    if (this.$form.find('input[type="file"]').length < 1) {
                        this.send_ajax()
                    } else {
                        return true
                    }
                }
                return false
            }, this))
     
    Последнее редактирование: 16 ноя 2015
    grebovich нравится это.
  5. grebovich

    grebovich Нарушитель

    Регистр.:
    19 мар 2012
    Сообщения:
    290
    Симпатии:
    56
    Спасибо огромное, редирект сработал, но возникла другая проблема, теперь форма обрабатывается, идет редирект, но на почту письмо не приходить....
     
  6. Q_BASIC

    Q_BASIC

    Регистр.:
    30 ноя 2013
    Сообщения:
    352
    Симпатии:
    223
    Смотрите в логах браузера

    В Chrome: ПКМ на странице -> просмотр кода элемента -> там есть вкладка "Network". Там смотрите, какой запрос - куда запрос - зачем запрос. Был ли он, какой ответ сервера.

    Возможно, у Вас браузер страницу кэшировал
     
  7. grebovich

    grebovich Нарушитель

    Регистр.:
    19 мар 2012
    Сообщения:
    290
    Симпатии:
    56
    Дело в том что если убираю строку a.done( window.location="thank-you.html") то почта отправляеться моментально, но нет редиректа, если строку добавляю, то визуально все ок, но почта не приходит....
    И Заметил что все хорошо работает из указанной строкой в новом браузере, но только один раз после уже тоже не работает, что то в коде JS кеширует или что не пойму.