Форум программистов, компьютерный форум, киберфорум
jQuery
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 27.11.2015
Сообщений: 9
1

Ошибка в форме обратной связи

07.04.2016, 07:05. Показов 1056. Ответов 7
Метки нет (Все метки)

Как известно PHP файл с сайта стырить нельзя и приходится самому его мастерить. Сама форма работает, но выводит ошибку и отправляет по две копии, надеюсь на вашу помощь.
Вот собственно сам код.
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
function _sendForm(e) {
    e.preventDefault();
 
    var form = $(this),
        button = $('[type=submit]', $(this)).val('Загрузка...').attr('disabled', 'disabled');
    $('*', form).removeClass('error');
    if(form.parents('.js-offers-tab').length) {
        $('[name=sadd]').val('Проект '+$('.offer-projects-nav .projects').text()+'.');
    }
    $.ajax({
        url: '/handle/handler.php?action=' + form.attr('data-id'),
        type: 'post',
        data: new FormData(form[0]),
        dataType: 'json',
        success: function (data) {
            if (typeof undefined != typeof data.success) {
                if(true === data.success) {
                    closeOverlay($('.js-overlay > :not(.dn)'));
                    form[0].reset();
                    dropdown_Init();
                    //alert('Заявка принята.');
                    _showThx();
                } else if (data['errors'] && data['errors'] instanceof Array){
                    $.each(data['errors'], function(idx, val) {
                        form.find('[name='+val+']').addClass('error');
                    });
                }
            } else {
                alert('Призошла ошибка!');
            }
        },
        error: function () {
            alert('Призошла ошибка!');
        },
        complete: function () {
            button.val('Отправить').removeAttr('disabled');
        },
        //Options to tell jQuery not to process data or worry about content-type.
        cache: false,
        contentType: false,
        processData: false
    });
}
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<form class="form to-date-form contact-form" data-id="meeting">
                    <h3 class="form-title">Текст-текст:<br>ни один вопрос не останется без ответа</h3> <!-- CHANGE -->
                    <fieldset class="fieldset">
                        <div class="line">
                            <input name="name" placeholder="Ваше имя" class="action input name" required="" type="text">
                            <input name="email" placeholder="Ваш email" class="action input email" required="" type="email">
                            <input name="phone" placeholder="Телефон" class="action input" required="" type="tel">
                        </div>
                        <div class="line">
                            <textarea class="action textarea" name="comment" placeholder="Комментарий к заявке"></textarea>
                        </div>
                        <div class="last-line">
                            
                            <input value="Отправить" class="btn green-btn" type="submit">
                        </div>
                    </fieldset>
                </form>
И PHP код, который я сам смастерил с сети.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<?php
 
/* Задаем переменные */
$name = htmlspecialchars($_POST["name"]);
$email = htmlspecialchars($_POST["email"]);
$phone = htmlspecialchars($_POST["phone"]);
$comment = htmlspecialchars($_POST["comment"]);
 
/* Ваш адрес и тема сообщения */
$address = "ххх@mail.ru";
$sub = "Сообщение с сайта XXX";
 
/* Формат письма */
$mes = "Сообщение с сайта XXX\n
Имя отправителя: $name 
Электронный адрес отправителя: $email
Телефон отправителя: $phone
Текст сообщения:
$comment";
 
 
if (empty($bezspama)) /* Оценка поля bezspama - должно быть пустым*/
{
/* Отправляем сообщение, используя mail() функцию */
$from  = "From: $name <$email> \r\n Reply-To: $email \r\n"; 
if (mail($address, $sub, $mes, $from)) {
    header('Refresh: 5; URL=http://russkie-bani.su/');
    echo 'Письмо отправлено, через 5 секунд вы вернетесь на сайт XXX';}
else {
    header('Refresh: 5; URL=http://russkie-bani.su/');
    echo 'Письмо не отправлено, через 5 секунд вы вернетесь на страницу YYY';}
}
exit; /* Выход без сообщения, если поле bezspama заполнено спам ботами */
?>
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.04.2016, 07:05
Ответы с готовыми решениями:

Передача дополнительных данных в форме обратной связи
Добрый день, подскажите возможно ли автоматически передавать дополнительные данные в форме обратной...

Не могу разобраться в чем ошибка, в обратной форме можно отправлять пустые письма
По шаблону учусь делать сайт, в шаблоне оказывается не работает форма обратной связи, я переправлял...

Форма обратной связи
Здравствуйте. Есть подобная форма обратной связи, она появляется в виде popup окна, я, с горем...

Форма обратной связи
Всем привет! Вставил на сайт форму обратной связи, найденную на просторах интернета. Выглядит...

7
117 / 117 / 87
Регистрация: 24.02.2014
Сообщений: 404
07.04.2016, 08:49 2
Какую выводит ошибку? Как вызываете функцию _sendForm(e) ?
0
0 / 0 / 0
Регистрация: 27.11.2015
Сообщений: 9
07.04.2016, 09:08  [ТС] 3
_sendForm(e) походу вызывается здесь
Javascript
1
2
3
4
5
6
7
8
9
10
11
$(document).on('submit', 'form', _sendForm);
 
        $(document).on('click', '.js-overlay-close', function(e) {
            var $tab = $('.js-overlay > :not(.dn)');
            if($tab.length) closeOverlay($tab);
            e.stopPropagation();
        });
 
        $(document).on('click', '.thx-page a', _hideThx);
        initArticles();
        detectHashHouse();
В этой функции ошибки выводит, точнее "Произошла ошибка!" и второй раз "Произошла ошибка!", но письма идут.
0
117 / 117 / 87
Регистрация: 24.02.2014
Сообщений: 404
07.04.2016, 09:24 4
Вы JS скрипт, я так понимаю не сами писали?

Что у вас обрабатывает это условие?

Цитата Сообщение от elmanana Посмотреть сообщение
if (typeof undefined != typeof data.success) {
Вы посмотрите что возвращается в data, там нет ни каких success. Поэтому и выдается ошибка, потому что условие истинно ни когда не будет. И, кстати, у вас скрипт ожидает, что вернутся данные в формате json, а вы возвращаете просто текст.

Почему два раза письмо отправляется пока не понятно, вроде все правильно написано.
0
Философ-разговорник
159 / 95 / 56
Регистрация: 20.02.2016
Сообщений: 369
07.04.2016, 09:29 5
Цитата Сообщение от elmanana Посмотреть сообщение
PHP файл с сайта стырить нельзя и приходится самому его мастерить
Вот это больше всего понравилось С недавнего времени собираю коллекцию скриншотов всяких перлов из интернета. К слову, данный форум находится в числе бесспорных лидеров по безграмотности и косноязычию.
0
0 / 0 / 0
Регистрация: 27.11.2015
Сообщений: 9
07.04.2016, 09:34  [ТС] 6
да, я под готовый js хотел написать php

и кстати там был кнопка, "прикрепить файл" в форме отправки, может от него осталось? Может быть убрать эту строку?
0
117 / 117 / 87
Регистрация: 24.02.2014
Сообщений: 404
07.04.2016, 09:37 7
Лучший ответ Сообщение было отмечено elmanana как решение

Решение

Цитата Сообщение от elmanana Посмотреть сообщение
да, я под готовый js хотел написать php
Мне кажется проще прочитать про ajax и написать все самому - и ошибок будет меньше и проще понимать что происходит.
0
0 / 0 / 0
Регистрация: 27.11.2015
Сообщений: 9
07.04.2016, 10:12  [ТС] 8
И на том спасибо.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.04.2016, 10:12

Форма обратной связи
Ребят, помогите пожалуйста. Никак не могу найти проблему. вот два сайта....

Форма обратной связи. Ошибка
Всем привет. Делал форму обратной связи без перезагрузки страницы по уроку в интернете. ...

Форма обратной связи
здравствуйте, есть у кого-то код формы, интерисует, простейшая - три поля имя эл. почта...

Форма обратной связи
Приветствую всех, вопрос возник. Можно ли форму обратной связи отправить без php? На js


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.