Всем привет! Не получается сделать отправку писем на сайте через AJAX. Нажимаю на кнопку отправить и ничего не происходит. Консоль в ответ не выдает никаких ошибок. Не могу понять где что ни так..
HTML
<form action="" method="POST" id="form_question">
<div class="form-row">
<div class="form-group col-md-6">
<label for="user_name">Имя</label>
<input type="text" class="form-control" name="user_name" placeholder="Имя" id="user_name" required ><span></span>
<label for="user_email">Email</label>
<input type="email" class="form-control" name="user_email" placeholder="Email" id="user_email" required ><span></span>
<label for="name_category">Выберите категорию</label>
<select class="custom-select" name="name_category" id="name_category" required >
<option selected value="">Выберите категорию...</option>
<option value="Программы">Программы</option>
<option value="Ошибки">Ошибки</option>
<option value="Игры">Игры</option>
<option value="Операционная система">Операционная система</option>
<option value="BIOS">BIOS</option>
<option value="Комплектующие">Комплектующие</option>
<option value="Проблемы с железом">Проблемы с железом</option>
</select><span></span>
</div>
<div class="form-group col-md-6">
<label for="tema">Тема</label>
<input type="text" class="form-control" name="tema" id="tema" placeholder="Тема вопроса"><span></span>
<label for="message">Ваш вопрос</label>
<textarea class="form-control" placeholder="Сообщение..." name="message" id="message" rows="4" required ></textarea><span></span>
</div>
<button type="submit" class="btn btn-primary col-md-10 mb-4 mx-auto" id="submit">Отправить</button><span></span>
</div>
</form>
JS
$(function(){
$("#form_question").submit(function() {
var errors = false;
$(this).find('span').empty();
$(this).find('input, option, textarea').each(function(){
if ($.trim( $(this).val() ) == '' ) {
errors = true;
$(this).next().text('Не заполнено поле ' + $(this).prev().text() );
}
});
if ( !errors ) {
var data = $('#form_question').serialize();
$.ajax({
url: 'mail.php',
type: 'POST',
data: data,
beforeSend: function(){
$('#submit').next().text('Отправляю...');
},
success: function(res){
if(res == 1){
$('#form_question').find('input:not(#submit), textarea, option').val('');
$('#submit').next().empty();
alert('Письмо отправлено');
}
else {
$('#submit').next().empty();
alert('Ошибка отправки!');
}
},
error: function(){
alert('Ошибка!');
}
});
}
return false;
});
});
PHP
<?php
if ( $_POST){
require 'phpmailer/PHPMailerAutoload.php';
$mail = new PHPMailer;
$mail->isSMTP();
$mail->Host = 'smtp.yandex.ru';
$mail->SMTPAuth = true;
$mail->Username = 'voprosy.ssaita@yandex.ru';
$mail->Password = 'vopros.v.o09071993#%';
$mail->SMTPSecure = 'ssl';
$mail->Port = '465';
$mail->CharSet = 'utf-8';
$mail->From = 'voprosy.ssaita@yandex.ru';
$mail->addAddress('healpk@yandex.ru', 'Name');
$mail->addCC('healpk@yandex.ru');
$mail->isHTML(true);
$mail->Subject = $_POST['name_category'];
$mail->Body = "Привет! Меня зовут: {$_POST['user_name']} Моя почта: {$_POST['user_email']} <br> Категория: {$_POST['name_category']} <br> Тема: {$_POST['tema']} <br> Вопрос: " .nl2br($_POST['message']);
$mail->AltBody ="Привет! Меня зовут: {$_POST['user_name']} Моя почта: {$_POST['user_email']} \r\n Категория: {$_POST['name_category']} \r\n Тема: {$_POST['tema']} \r\n Вопрос: {$_POST['message']}";
if ($mail->send() ){
$answer = '1';
}
else {
$answer = '0';
}
die ($answer);
}
?>
Помогите, пожалуйста, понять и найти ошибку))
Попробуйте вставить мой рабочий вариант он как раз показывает как отправить сообщение и принять на php и отправить обратно. Ошибок может быть много например url не правильный.Советую вам просто сделать простой запрос и 1 единственный ответ echo 999; и вывести этот ответ в js.вы отправляете data и data это не совсем логично.Посмотрите у меня происходит передача имени и значения переменной которую php принимает. А где вы принимаете это я не увидел.К базе данных можно и проще подключится если в первом варианте вы получили ответ 999 попробуйте взять любое число из базы данных и его отправить и вывести в js тогда вы убедитесь что она функционирует правильно. Хочется добавить ajax очень сложная вещь,чтобы её понять желательно сделать более простую передачу данных и понять каждую строку ,что куда и зачем идёт. var id=812382;
var k="Иван";
$.ajax ({ // сам метод ajax
url: "ch.php",// куда отправлять
type: "POST", // тип отправки
data: ({num1: id,num3: k}), // отправляем id и имя
dataType: "html",
beforeSend: funcBefore,
success: function(data){// тут принимает ответ от php
// тут получаем ответ
alert(data);// должно выйти сообщение данные записаны
}
}
});
// вот эти функция нужны чтобы всё правильно работало
function funcBefore () {
$("#information").text ("Ожидание данных...")
}
function funcSuccess (data) {
}
<?php
$mysqli = new mysqli ("localhost", "имя бд", "пар", "имя бд"); // подключение к базе данных
$mysqli->query ("SET NAMES 'utf8' "); // кодировка
// тут мы принимаем данные
$w=$_POST['num1']; // id
$w1=$_POST['num3']; // имя
$mysqli->query ("UPDATE `название таблицы` SET `name` = '$w1' WHERE `название таблицы`.`id` = $w"); // записываем данные
echo "данные записаны";
$mysqli->close();// закрытие бд
?>
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Хотел бы поинтересоваться, как преобразовать объект, получаемый от АПИ ТелеграммаНиже моя попытка:
Fatal error: Uncaught PDOException: SQLSTATE[HY000]: General error: mode must be an integer in C:\OSPanel\domains\WorkLeader\app\models\Adminphp on line 55 ( ! ) PDOException: SQLSTATE[HY000]: General error: mode must be an integer in C:\OSPanel\domains\WorkLeader\app\models\Admin