Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 24.08.2016, 13:31
Аватар для fenix_63
Аспирант
Отправить личное сообщение для fenix_63 Посмотреть профиль Найти все сообщения от fenix_63
 
Регистрация: 05.06.2014
Сообщений: 92

Не работает асинхронная отправка формы
всем привет. Есть сайт http://brasletic.ru/

Там есть форма "Заполни форму сейчаси получи скидку 70 %". Заполняю поля "Имя" и "Телефон", жму "Получить скидку 70%" - по идее должно письмо идти на почту, которая указана в order.php. Но ничего не приходит. Всегда выполняется функция error. Народ, помогите пожалуйста.

Вот сам AJAX метод, содержится прям в index.htm, само собой jQuery предварительно подключен:

<script type="text/javascript">

            function AjaxFormRequest() {
                jQuery.ajax({
                    url: 'order.php', //Адрес подгружаемой страницы
                    type: "POST", //Тип запроса
                    dataType: "text", //Тип данных
                    data: jQuery("#order_form").serialize(),
                    success: function(response) { //Если все нормально
                    	alert('Сообщение отправлено!');
	                },
	                error: function(response) { //Если ошибка
	                	alert('Error!');
	                }
	             });
        		}

   	</script>


Вот файл order.php:

<?php

if (strlen($_POST['phone']) > 5) {

    

    $to = 'моя_почта@mail.ru';


    $subject = 'Новая заявка с сайта brasletic.ru';
    $headers  = "Content-type: text/html; charset=utf-8 \r\n";
    $headers .= "From: brasletic\r\n";

    $message = '
                <html>
                    <head>
                        <title>'.$subject.'</title>
                    </head>
                    <body>
                        <p>Имя: '.$_POST['name'].'</p>
                        <p>Телефон: '.$_POST['phone'].'</p>
                    </body>
                </html>';

    $send = mail($to, $subject, $message, $headers);

}
Ответить с цитированием
  #2 (permalink)  
Старый 24.08.2016, 13:44
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Нужно блокировать отправку самой формы. А почтовые отправления так оформлять нельзя - заголовок Content-type: text/html; charset=utf-8 не определяет кодировку subject, subject нужно кодировать.
Ответить с цитированием
  #3 (permalink)  
Старый 24.08.2016, 13:46
Аватар для fenix_63
Аспирант
Отправить личное сообщение для fenix_63 Посмотреть профиль Найти все сообщения от fenix_63
 
Регистрация: 05.06.2014
Сообщений: 92

Может ты знаешь как это реализуется?
Ответить с цитированием
  #4 (permalink)  
Старый 24.08.2016, 13:57
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Жмете в браузере F12, откроется отладчик, заходим в консоль и смотрим - ошибок куча. Сперва надо с ними разобраться, а уж потом вопросы задавать. Или показывайте код формы, как отправляется и т.д.. Ну или ждите кто в ошибках ваших копаться захочет, ну и т.д..
Ответить с цитированием
  #5 (permalink)  
Старый 24.08.2016, 14:09
Аватар для fenix_63
Аспирант
Отправить личное сообщение для fenix_63 Посмотреть профиль Найти все сообщения от fenix_63
 
Регистрация: 05.06.2014
Сообщений: 92

Вот код самой формы:

<form class="form text-top" method="post" id="order_form">

<div class="fields incon pad-invert"> <div class="incon" style="width: auto;"> <div class="field" data-type="name">


<div class="name"> <div class=""> Имя&nbsp;<span class="required">*</span> </div> </div> <div class="input">

<input type="text" name="name" class="form-control" style="border-radius: 30px; border-color: rgb(220, 220, 220); color: rgb(49, 49, 49); background-color: rgba(246, 246, 246, 0.439216);">

</div> </div> </div><div class="incon" style="width: auto;"> <div class="field" data-type="phone"> <div class="name"> <div class=""> Телефон&nbsp;<span class="required">*</span> </div> </div> <div class="input">

<input type="text" name="phone" class="form-control" style="border-radius: 30px; border-color: rgb(220, 220, 220); color: rgb(49, 49, 49); background-color: rgba(246, 246, 246, 0.439216);">

</div> </div> </div> </div> <div class="macros-button"><div class="btn-out full xs-none"> <div class="btn-inner incon"> <button class="btn submit font-text" id="uid116" data-action="" hack-data-id="" data-ym_goal="" data-ga_category="" data-ga_action="" data-id="">

<span class="text">Получить скидку 70%</span>

<input onclick="AjaxFormRequest();" value=""> </button>

</style>
</div>
</div>

</div>

</form>


До меня делалось, возможно лишнего много.
Ответить с цитированием
  #6 (permalink)  
Старый 24.08.2016, 14:24
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Зачем в коде формы <input onclick="AjaxFormRequest();" value="">? Он вообще ничего полезного не делает, выбросить и:

function AjaxFormRequest() {
$(function() {
     $("#order_form").submit(function(e) {         
          e.preventDefault();
         jQuery.ajax({
                    url: 'order.php', //Адрес подгружаемой страницы
                    type: "POST", //Тип запроса
                    dataType: "text", //Тип данных
                    data: jQuery(this).serialize(),
                    success: function(response) { //Если все нормально
                        alert('Сообщение отправлено!');
                    },
                    error: function(response) { //Если ошибка
                        alert('Error!');
                    }
                 });
   });
});

}

Вашу форму можно даже пустой отправить.

PS. dataType - это тип данных ожидаемых от сервера, в коде не видно чтобы сервер вообще отвечал.

Последний раз редактировалось laimas, 24.08.2016 в 14:26.
Ответить с цитированием
  #7 (permalink)  
Старый 24.08.2016, 14:49
Аватар для fenix_63
Аспирант
Отправить личное сообщение для fenix_63 Посмотреть профиль Найти все сообщения от fenix_63
 
Регистрация: 05.06.2014
Сообщений: 92

А кнопку то зачем удалять? вызов метода - тут ещё понятно. Отправлять данные то надо по событию - т.е. по клику на кнопку. Я оставил кнопку, добавил type="submit", событие oncklick удалил. в тег <form> добавил method="post". Всё равно не работает. Просто перезагружает страницу и всё, никакие данных на почту не приходят.
Ответить с цитированием
  #8 (permalink)  
Старый 24.08.2016, 14:54
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от fenix_63
А кнопку то зачем удалять?
<input onclick="AjaxFormRequest();" value=""> - это разве кнопка? Фрма отправляется button, вот что в форме кнопка, а input по умолчанию есть тип text. Вот чего он делает в форме?

Сообщение от fenix_63
Просто перезагружает страницу и всё, никакие данных на почту не приходят.
Потому и перегружает страницу, потому как форма отправляется button, а чего вы там наколбасили, ей по барабану. )

PS. Чуть не забыл - сюда и проверить <button><input /></button>

Последний раз редактировалось laimas, 24.08.2016 в 15:04.
Ответить с цитированием
  #9 (permalink)  
Старый 24.08.2016, 15:04
Аватар для fenix_63
Аспирант
Отправить личное сообщение для fenix_63 Посмотреть профиль Найти все сообщения от fenix_63
 
Регистрация: 05.06.2014
Сообщений: 92

Убрал полностью input, оставил только button - всё равно данные не отправляются, и страница перезагружается. Я уж прям и не знаю что делать
Ответить с цитированием
  #10 (permalink)  
Старый 24.08.2016, 15:13
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

$(function() {//это обработка события onload документа, не будет работать, если есть конфликт с JQ по использованию $. Есть такая ошибка в консоли?
     $("#order_form").submit(function(e) { //а это установка обработчика отправки формы после готовности документа.         
         //берем и проверяем просто
          alert(1); //сюда то хоть попадаем? 
         e.preventDefault(); //это предотвращает естественную отправку формы
           
         jQuery.ajax({
                    url: 'order.php', //Адрес подгружаемой страницы
                    type: "POST", //Тип запроса
                    dataType: "text", //Тип данных
                    data: jQuery(this).serialize(),
                    success: function(response) { //Если все нормально
                        alert('Сообщение отправлено!');
                    },
                    error: function(response) { //Если ошибка
                        alert('Error!');
                    }
                 });
   });
});
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ajax и отправка файлов с формы miker059 jQuery 5 10.01.2018 03:12
Отправка формы при каждом обновлении страницы Ingener Общие вопросы Javascript 0 25.03.2016 19:26
проверка формы не работает в ie begelme Javascript под браузер 6 13.08.2013 01:00
Отправка формы с помощью XMLHttpRequest2 и FormData pav jQuery 3 05.10.2011 10:16
в модальном окне не работает скрипт проверки формы necroms jQuery 1 11.03.2011 15:14