Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 11.10.2016, 23:50
Кандидат Javascript-наук
Отправить личное сообщение для WebMachine Посмотреть профиль Найти все сообщения от WebMachine
 
Регистрация: 11.10.2016
Сообщений: 141

Форма обратной связи php + ajax
Ребят помогите. форма на php + ajax.
сам сайт: http://my-resume.xyz

я испробовал уже всё что можно.
и не выходит. на данный момент стоит :https://habrahabr.ru/sandbox/93363/

но форма не работает и + к тому же происходит перезагрузка.. ошибка в ajax'e 100%.
HTML:
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"  type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function(){
    $("#form").submit(function() { //устанавливаем событие отправки для формы с id=form
            var form_data = $(this).serialize(); //собераем все данные из формы
            $.ajax({
            type: "POST", //Метод отправки
            url: "mail-send.php", //путь до php фаила отправителя
            data: form_data,
            success: function() {
                   //код в этом блоке выполняется при успешной отправке сообщения
                   alert("Ваше сообщение отпрвлено!");
            });
    });
});    
</script>
</head>
<body>
<form id="form">
<div class="form-group row">
<label class="col-md-4 control-label k_field_name">ФИО</label>
<div class="col-md-8"><input type="text" class="form-control" name="name1" id="name1" required></div>
</div>
<div class="form-group row">
<label class="col-md-4 control-label k_field_name">E-mail</label>
<div class="col-md-8"><input type="text" class="form-control" name="email1" id="email1" required></div>
</div>
<div class="form-group row">
<label class="col-md-4 control-label k_field_name">Телефон</label>
<div class="col-md-8"><input type="text" class="form-control" name="phone1" id="phone1" required></div>
</div>
<div class="form-group row">
<label class="col-md-4 control-label k_field_name">Город</label>
<div class="col-md-8"><input type="text" class="form-control" name="country1" id="country1" required></div>
</div>
<div class="form-group row">
<label class="col-md-4 control-label k_field_name">Темы для выступлений в СМИ</label>
<div class="col-md-8"><textarea class="form-control" name="mtext1" id="mtext1" required></textarea></div>
</div>
<div class="form-group row">
<label class="col-md-4 control-label k_field_name">Страница на Facebook</label>
<div class="col-md-8"><input type="text" class="form-control" name="facelink1" id="facelink1" required></div>
</div>
<div class="form-group row">
<div class="col-md-8 col-md-offset-4">
<button type="submit" class="btn btn-primary pull-left">Отправить</button>
<button type="button" class="md-close btn btn-primary pull-right">Закрыть</button>
</div>
</div>
</form>
</body>


PHP (mail-send.php):
<?
if((isset($_POST['name1'])&&$_POST['name1']!="")&&(isset($_POST['email1'])&&$_POST['email1']!="")&&(isset($_POST['phone1'])&&$_POST['phone1']!="")&&(isset($_POST['country1'])&&$_POST['country1']!="")&&(isset($_POST['facelink1'])&&$_POST['facelink1']!="")&&(isset($_POST['mtext1'])&&$_POST['mtext1']!="")){
        $to = 'web.pr@mail.ru';
        $subject = 'Заявка на вступление в клуб экспертов';
        $message = "<p><strong>Имя:</strong> $name1</p>
		\n<p><strong>E-mail:</strong> $email1</p>
		\n<p><strong>Телефон:</strong> $phone1</p>
		\n<p><strong>Город:</strong> $country1</p>
		\n<p><strong>Страница на Facebook:</strong> $facelink1</p>
		\n<p><strong>Темы для выступлений в СМИ:</strong> $mtext1</p>";
        $headers  = "Content-type: text/html; charset=utf-8 \r\n";
        $headers .= "From: $name1 <$to>\r\n";
        mail($to, $subject, $message, $headers);
}
?>

Последний раз редактировалось WebMachine, 11.10.2016 в 23:54.
Ответить с цитированием
  #2 (permalink)  
Старый 11.10.2016, 23:55
Кандидат Javascript-наук
Отправить личное сообщение для WebMachine Посмотреть профиль Найти все сообщения от WebMachine
 
Регистрация: 11.10.2016
Сообщений: 141

пишет ошибку: Uncaught SyntaxError: Unexpected token )
Ответить с цитированием
  #3 (permalink)  
Старый 13.10.2016, 11:36
Профессор
Отправить личное сообщение для warren buffet Посмотреть профиль Найти все сообщения от warren buffet
 
Регистрация: 08.07.2016
Сообщений: 1,332

Еще пишут в какой строке. Вот и ищи эту строку.
Ответить с цитированием
  #4 (permalink)  
Старый 13.10.2016, 11:51
Профессор
Отправить личное сообщение для Царь Леонид Посмотреть профиль Найти все сообщения от Царь Леонид
 
Регистрация: 22.08.2013
Сообщений: 217

Фигурную скобку надо добавить перед )
Ответить с цитированием
  #5 (permalink)  
Старый 13.10.2016, 19:26
Кандидат Javascript-наук
Отправить личное сообщение для WebMachine Посмотреть профиль Найти все сообщения от WebMachine
 
Регистрация: 11.10.2016
Сообщений: 141

Сообщение от Царь Леонид Посмотреть сообщение
Фигурную скобку надо добавить перед )
Где именно? подскажи пожалуйста
Ответить с цитированием
  #6 (permalink)  
Старый 13.10.2016, 20:21
Аватар для Ramzes94
Аспирант
Отправить личное сообщение для Ramzes94 Посмотреть профиль Найти все сообщения от Ramzes94
 
Регистрация: 09.06.2015
Сообщений: 62

Проблема в ajax коде, а вот в js я не шарю.

php выполняет свою работу

<?php
	if(!empty($_POST['name1'])&&!empty($_POST['email1'])&&!empty($_POST['phone1'])&&!empty($_POST['country1'])&&!empty($_POST['facelink1'])&&!empty($_POST['mtext1'])){
			$to = 'web.pr@mail.ru';
			$subject = 'Заявка на вступление в клуб экспертов';
			$message = "<p><strong>Имя:</strong> $name1</p>
			\n<p><strong>E-mail:</strong> $email1</p>
			\n<p><strong>Телефон:</strong> $phone1</p>
			\n<p><strong>Город:</strong> $country1</p>
			\n<p><strong>Страница на Facebook:</strong> $facelink1</p>
			\n<p><strong>Темы для выступлений в СМИ:</strong> $mtext1</p>";
			$headers  = "Content-type: text/html; charset=utf-8 \r\n";
			$headers .= "From: $name1 <$to>\r\n";
			mail($to, $subject, $message, $headers);
	}
?>

Последний раз редактировалось Ramzes94, 13.10.2016 в 20:46.
Ответить с цитированием
  #7 (permalink)  
Старый 14.10.2016, 03:19
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Нужно отменять естественную отправку формы:

//либо так
$("#form").submit(function(e) { /
   e.prevetDefault();
   .....
});

//либо так
$("#form").submit(function(e) {
   .....
   return false
});


Сообщение от Ramzes94
php выполняет свою работу
Если бы вы хоть его код написали как положено, а так и в нем полный бардак. $subject = 'Заявка на вступление в клуб экспертов'; - не есть гарантия того, что его прочтут, тему сообщения кодируют.

Content-type: text/html;, а в теле </p>\n<p> - нет в html никаких \r\n или \n, они игнорируются.

!empty($_POST['name1'])&&!empty($_POST['email1'])....

$var = ' ';
echo !empty($var) ? 'Пусто' : 'Ок';


И будет ОК. Удалять нужно крайние пробелы всегда, прежде чем производить проверку, для одномерного массива это можно сделать обходом array_map(), для многомерного array_walk_recursive().

Методично проверять каждую переменную в портянке If не обязательно, можно проверить после trim наличие одного пустого поля.

Отправляя сообщение как html, текст сообщения пользователя обязательно пропускать через htmlspecialchars.
Ответить с цитированием
  #8 (permalink)  
Старый 14.10.2016, 07:31
Профессор
Отправить личное сообщение для warren buffet Посмотреть профиль Найти все сообщения от warren buffet
 
Регистрация: 08.07.2016
Сообщений: 1,332

Говнокодеры митингуют за колхоз.

Нормально делается вообще просто.

$form=array(

   'name'=>array(
       'caption'=>'Ваше имя',
       'placeholder'=>'Не менее трех букаф',
       'type'=>'text',
       'required'=>3,
       'class'=>'md8-blah-blah',
       'id'=>'kakoe-to-id'
   ),
   'phone'=>array(
   /* по тому же шаблону */
);


Теперь самоочевидно под такой массив пишется шаблон рендера формы.

Затем самоочевидно по такому массиву проверяется то, что пришло с браузера.

That's all folks.

Последний раз редактировалось warren buffet, 14.10.2016 в 07:37.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
форма обратной связи maxg5 Общие вопросы Javascript 25 16.08.2016 20:18
Нужна помощь - форма обратной связи со скачиванием файла Baton1777 Общие вопросы Javascript 3 24.05.2015 02:21
Форма обратной связи Ajax soledar10@meta.ua AJAX и COMET 3 07.08.2013 14:54
ajax форма обратной связи anton-mgn AJAX и COMET 7 15.09.2011 20:42
Форма обратной связи на AJAX проблемы с модальным окном pavel87 AJAX и COMET 0 26.05.2011 14:30