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

grebovich

Гуру форума
Регистрация
19 Мар 2012
Сообщения
370
Реакции
86
Здравствуйте!
Помогите пожалуйста с формой...
Создал на генераторе одностраничник , перенес его на свой домен, подключил отправку почты , в которой так же подключил редирект, но какая то зараза в 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');
?>
 
Здравствуйте!
Помогите пожалуйста с формой...
Создал на генераторе одностраничник , перенес его на свой домен, подключил отправку почты , в которой так же подключил редирект, но какая то зараза в 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');
?>
попробуй полный адрес ссылки.
Проверь параметр
output_buffering =On
php.ini
гдето читал, что он как-то влияет...
 
попробуй полный адрес ссылки.
Проверь параметр
output_buffering =On
php.ini
гдето читал, что он как-то влияет...
К сожалению ни один из указанных методов так же ефекта не дал
 
У Вас 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))
 
Последнее редактирование:
У Вас 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))
Спасибо огромное, редирект сработал, но возникла другая проблема, теперь форма обрабатывается, идет редирект, но на почту письмо не приходить....
 
Спасибо огромное, редирект сработал, но возникла другая проблема, теперь форма обрабатывается, идет редирект, но на почту письмо не приходить....
Смотрите в логах браузера

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

Возможно, у Вас браузер страницу кэшировал
 
Смотрите в логах браузера

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

Возможно, у Вас браузер страницу кэшировал
Дело в том что если убираю строку a.done( window.location="thank-you.html") то почта отправляеться моментально, но нет редиректа, если строку добавляю, то визуально все ок, но почта не приходит....
И Заметил что все хорошо работает из указанной строкой в новом браузере, но только один раз после уже тоже не работает, что то в коде JS кеширует или что не пойму.
 
Назад
Сверху