@del993788

Почему на ровном месте не работает ajax?

Здравствуйте. Я сейчас сойду с ума. Есть страница: фарбер.рф . Внизу страницы есть блок "бесплатная консультация". Если туда ввести телефон, то на почту придёт сообщение с этим телефоном. Все письма приходят, но ajax не пашет. В исходном коде вы можете увидеть js код. Я то ли где-то опечатался, то ли еще что-то, но блин. Я уже второй час сижу и ничего понять не могу. Вот так выглядит php файл
<?php
$number = $_POST['number'];
$error = "no";
if ($number == '') {
echo "notnumber";
$error = "yes";     
                } else if(!$number || strlen($number)<10 || strlen($number)>16) {
echo "errornumber";
$error = "yes";
}

if($error=="no") {
$to      = 'qqignatqq@yandex.ru';
$subject = 'Обратный звонок Фарбер.рф';
$message = "Телефон $number";
$headers = 'From: qqignatqq@yandex.ru' . "\r\n" .
    'X-Mailer: PHP/' . phpversion();

if(mail($to, $subject, $message, $headers)){
    echo "ok";
} else {
    echo "error";
}
}
?>

Вот так js.
$(function(){
  'use strict';
$('#cont').on('submit', function(e){
    e.preventDefault();
    var fd = new FormData( this );
    $(".button2").val("Подождите..."); 
    $.ajax({
      url: 'cont.php',
      type: 'POST',
      contentType: false, // важно - убираем форматирование данных по умолчанию
      processData: false, // важно - убираем преобразование строк по умолчанию
      data: fd,
      success: function(msg){
if(msg == 'ok') {
 	$(".button2").val("Отправлено"); 
 	$(".contnum").removeClass("error"); 
}
if(msg == 'notnumber') {
 	$(".contnum").addClass("error"); 
 	$(".button2").val("Получить"); 
}
if(msg == 'errornumber') {
 	$(".contnum").addClass("error"); 
 	$(".button2").val("Получить"); 
}
      }
    });
  });
});

Смотрите: на стороне сервера идёт проверка телефона, и результат php приходит на сайт, где js должен в разных случаях изменить определённые классы, но он, почему-то, ничего не меняет. Где косяк?
  • Вопрос задан
  • 182 просмотра
Пригласить эксперта
Ответы на вопрос 2
slo_nik
@slo_nik
Добрый день.
В ответе от сервера приходит "errornumber" (смотреть в консоли firebug), а в коде у Вас есть
echo "errornumber";
и не только это, куча "echo"...
Я думаю, что для начала надо убрать вывод в php файле при помощи "echo", заменить на переменные, которые надо вернуть для js.
Ответ написан
z80b
@z80b
Frontend
У вас в строчке: var fd = new FormData( this ); в объекте нет значений из формы.
Попробуйте:
var fd = $(this).serializeArray();
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы