Javascript-форум (https://javascript.ru/forum/)
-   Javascript под браузер (https://javascript.ru/forum/css-html/)
-   -   Отправка формы через Ajax (https://javascript.ru/forum/css-html/65036-otpravka-formy-cherez-ajax.html)

ru.scr 21.09.2016 12:09

Отправка формы через Ajax
 
Приветствую. Есть форма обратной связи в модальном окне, отправка происходит при проверке через Ajax.

Проблема в том, что форма отправляется даже пустой, хотя у одного из input стоит обязательно. При нажатии отправить подсвечивает обязательно, но все равно отправляет. Как сделать проверку этого поля, и если оно пустое не отправлять? Спасибо!

Код Ajax:

<script>
		$(document).ready(function () {
			$("input#submit").click(function(){
				$.ajax({
					type: "POST",
					url: "process.php",
					data: $('form.contact').serialize(),
					success: function(msg){
						$("#thanks").html(msg)
						$("#myModal").modal('hide');
						alert("Спасибо, ваше сообщение отрпавлено!");
					},
					error: function(){
						alert("failure");
					}
				});
			});
		});
    </script>


Код PHP обработчика:

<?php
$myemail = 'mail@ukr.net';
if (isset($_POST['name'])) {
$name = strip_tags($_POST['name']);
$phone = strip_tags($_POST['phone']);
$email = strip_tags($_POST['email']);
$message = strip_tags($_POST['message']);
echo "<span class=\"alert alert-success\" >Сообщение отправлено!</span><br><br>";
$to = $myemail;
$email_subject = "Заявка на консультацию: $name";
$email_body = "Получена заявка на консультацию. ".
" Подробнее:\n Имя: $name \n ".
"Email: $email\n Телефон: $phone\n Вопрос \n $message";
$headers = "From: $myemail\n";
$headers .= "Reply-To: $email";
mail($to,$email_subject,$email_body,$headers);
}?>

laimas 21.09.2016 14:07

Цитата:

Сообщение от ru.scr
хотя у одного из input стоит обязательно.

И что у него стоит? :blink:

Coriolan161 21.09.2016 17:27

ru.scr,
Но ты же нигде не проверяешь данные в инпутах. Проверь и отправь/не отправь
Как пример:
var nick_regex = /^[a-zа-яё0-9_\-]{3,15}$/i,
         nick_correct = nicknameRegex.test(input_value); //<--- какая-то фигня с инпута

    if (input_value && nick_correct) { // <--- если норм
      $highlight_group
        .removeClass('has-error')
        .addClass('has-success');

      $.ajax(....); // <--- тогда аякс

    } else { // <--- если нет, то идите в рутскоуп
        $highlight_group.addClass('has-error');
         return;
    };

ru.scr 25.09.2016 17:42

Так и не разобрался с проблемой.. может кто помочь? все равно отправляет форму даже если пустая...

ru.scr 25.09.2016 17:42

Цитата:

Сообщение от laimas (Сообщение 429348)
И что у него стоит? :blink:

обязательно к заполнению :)

Rise 25.09.2016 19:15

ru.scr,
// <input type="submit" id="submit" value="Отправить">

$('form.contact').submit(function(e){
	e.preventDefault();
	$.ajax({
		data: $(this).serialize(),
		// ...
	});
});

laimas 25.09.2016 20:36

Цитата:

Сообщение от ru.scr
обязательно к заполнению

<!DOCTYPE HTML> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
</head> 
<body>
<form>
<input name="as" required="" />
<input type="submit" value="GO" />
</form>
</body> 
</html>


Получится отправить?

И читайте о том как оформляются почтовые отправления. Так отправлять почту нельзя.


Часовой пояс GMT +3, время: 06:27.