Отправляю сообщение на почту. Сообщение отправляется и приходит, но в ajax не срабатывает success (нет уведомления об успешности) - бесконечно крутится "обработка сообщения". В чем проблема?
Файл js
$(document).ready(function () {
var regVr22 = "<div class='load'><div class='loading'><ul class='spinner'><li></li><li></li><li></li><li></li></ul></div><h6>Сообщение обрабатывается...</h6></div>";
var files;
//Заполняем переменную данными файлов, при изменении значения file поля
$('input[type=file]').on('change', function () {
files = this.files;
});
$("#send").click(function () {
$("#loadBar").html(regVr22).show();
var posName = $("#posName").val();
var posPhone = $("#posPhone").val();
var posEmail = $("#posEmail").val();
var posBirthday = $("#posBirthday").val();
var posCitizenship = $("#posCitizenship").val();
var posCity = $("#posCity").val();
var posMove = $("input:radio[name='move']:checked").val();
var posExperience = $("input:radio[name='experience']:checked").val();
//Создадим данные файлов в подходящем для отправки формате
var data = new FormData();
//Добавляем файлы, если они есть
if (typeof files != 'undefined') {
$.each(files, function (key, value) {
data.append(key, value);
});
}
data.append('posName', posName);
data.append('posPhone', posPhone);
data.append('posEmail', posEmail);
data.append('posBirthday', posBirthday);
data.append('posCitizenship', posCitizenship);
data.append('posCity', posCity);
data.append('posMove', posMove);
data.append('posExperience', posExperience);
data.append('my_file_upload', 1);
$.ajax({
type: "POST",
url: "../process_php/send_job.php",
dataType : "json",
contentType: false,
processData: false,
cache: false,
data: data,
success: function (response) {
var messageResp = "<div class='load'><div class='loading'></div><h6>Спасибо, <span>";
var resultStat = "</span>! Ваше сообщение отправлено!</h6></div>";
var oll = (messageResp + posName + resultStat);
if (response == 1) {
$("#loadBar").html(oll).fadeIn(3000);
$("#posName").val("");
$("#posPhone").val("");
$("#posEmail").val("");
$("#posBirthday").val("");
$("#posCitizenship").val("");
$("#posCity").val("");
} else {
$("#loadBar").html(response).fadeIn(3000);
}
}
});
return false;
});
});
Файл php
<?php
header("Content-type: text/html; charset=utf-8");
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
require '../lib/src/Exception.php';
require '../lib/src/PHPMailer.php';
require '../lib/src/SMTP.php';
$log == "";
$error = "no"; //Флаг наличия ошибки
$posName = rec($_POST['posName']);
$posPhone = rec($_POST['posPhone']);
$posEmail = rec($_POST['posEmail']);
$posBirthday = rec($_POST['posBirthday']);
$posCitizenship = rec($_POST['posCitizenship']);
$posCity = rec($_POST['posCity']);
$posMove = $_POST['posMove'];
$posExperience = $_POST['posExperience'];
//Проверка email адреса
function isEmail($posEmail) {
return (preg_match("/^[-_.[:alnum:]]+@((([[:alnum:]]|[[:alnum:]][[:alnum:]-]*[[:alnum:]])\.)+(ad|ae|aero|af|ag|ai|al|am|an|ao|aq|ar|arpa|as|at|au|aw|az|ba|bb|bd|be|bf|bg|bh|bi|biz|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|com|coop|cr|cs|cu|cv|cx|cy|cz|de|dj|dk|dm|do|dz|ec|edu|ee|eg|eh|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gh|gi|gl|gm|gn|gov|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|in|info|int|io|iq|ir|is|it|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|mg|mh|mil|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|museum|mv|mw|mx|my|mz|na|name|nc|ne|net|nf|ng|ni|nl|no|np|nr|nt|nu|nz|om|org|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|pro|ps|pt|pw|py|qa|re|ro|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|st|su|sv|sy|sz|tc|td|tf|tg|th|tj|tk|tm|tn|to|tp|tr|tt|tv|tw|tz|ua|ug|uk|um|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|yu|za|zm|zw)$|(([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5])\.){3}([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5]))$/i", $posEmail));
}
if ($posEmail == '') {
$log .= "<h6>Пожалуйста, укажите Ваш email!</h6>";
$error = "yes";
} else if (!isEmail($posEmail)) {
$log .= "<h6>Пожалуйста, убедитесь в правильности введенного email-адреса!</h6>";
$error = "yes";
}
//Проверка наличия введенного имени
if (empty($posName)) {
$log .= "<h6>Пожалуйста, укажите Ваше имя!</h6>";
$error = "yes";
}
//Проверка наличия введенного номера
if (empty($posPhone)) {
$log .= "<h6>Пожалуйста, укажите Ваш телефон!</h6>";
$error = "yes";
}
//Проверка наличия введенного года рождения
if (empty($posBirthday)) {
$log .= "<h6>Пожалуйста, укажите Вашу дату рождения!</h6>";
$error = "yes";
}
//Проверка наличия введенного гражданства
if (empty($posCitizenship)) {
$log .= "<h6>Пожалуйста, укажите Ваше гражданство!</h6>";
$error = "yes";
}
//Проверка наличия введенного города проживания
if (empty($posCity)) {
$log .= "<h6>Пожалуйста, укажите Ваш город проживания!</h6>";
$error = "yes";
}
//Проверка готовки в переезду
if (empty($posMove)) {
$log .= "<h6>Пожалуйста, укажите готовы ли Вы к командировкам!</h6>";
$error = "yes";
}
//Проверка наличия опыта
if (empty($posExperience)) {
$log .= "<h6>Пожалуйста, укажите есть ли у Вас опыт работы в охранной сфере!</h6>";
$error = "yes";
}
//Загрузка файлов на сервер
$uploaddir = '../uploads';
//Создадим папку, если её нет
if (!is_dir($uploaddir)) mkdir($uploaddir, 0777);
$files = $_FILES; //Полученные файлы
$done_files = array();
//Переместим файлы из временной директории в указанную
foreach($files as $file) {
$file_name = cyrillic_translit($file['name']);
if (move_uploaded_file($file['tmp_name'], "$uploaddir/$file_name")) {
$done_files[] = realpath("$uploaddir/$file_name");
}
}
//$data = $done_files ? array('files' => $done_files) : array('error' => 'Ошибка загрузки файлов.');
//die(json_encode($data));
//sleep(2);
//Если нет ошибок отправляем письмо
if ($error == "no") {
$mail = new PHPMailer(true);
//Настройки сервера
$mail->CharSet = 'UTF-8';
$mail->SMTPDebug = 2;
$mail->isSMTP();
$mail->Host = 'smtp.oo-gsi.ru';
$mail->SMTPAuth = true;
$mail->SMTPAutoTLS = false;
$mail->Username = '*******';
$mail->Password = '***********';
//$mail->SMTPSecure = 'ssl';
$mail->Port = 25;
//Получатели
$mail->setFrom('admin@oo-gsi.ru', 'Сайт ГСИ');
$mail->addAddress('sbrujg@mail.ru', 'Охранная огранизация ГСИ');
//Вложения
foreach($files as $file) {
$file_name = cyrillic_translit($file['name']);
$mail->addAttachment("$uploaddir/$file_name");
}
//Содержание
$mail->isHTML(true);
$mail->Subject = 'Анкета для приема на работу';
$mail->Body =
'Новая анкета для приема на работу в охранную организацию «ГСИ». <br><br>ФИО: '.rec($_POST['posName']).' <br>Телефон: '.rec($_POST['posPhone']).' <br>Email-адрес: '.rec($_POST['posEmail']).' <br>Год рождения: '.rec($_POST['posBirthday']).' <br>Гражданство: '.rec($_POST['posCitizenship']).' <br>Город проживания: '.rec($_POST['posCity']).' <br>Готовность к командировкам: '.rec($_POST['posMove']).' <br>Опыт работы в охранной сфере: '.rec($_POST['posExperience']).'';
$mail->AltBody =
'Новая анкета для приема на работу в охранную организацию «ГСИ». //ФИО: '.rec($_POST['posName']).' /Телефон: '.rec($_POST['posPhone']).' /Email-адрес: '.rec($_POST['posEmail']).' /Год рождения: '.rec($_POST['posBirthday']).' /Гражданство: '.rec($_POST['posCitizenship']).' /Город проживания: '.rec($_POST['posCity']).' /Готовность к командировкам: '.rec($_POST['posMove']).' /Опыт работы в охранной сфере: '.rec($_POST['posExperience']).'';
$mail->send();
echo "1"; //Все отлично
} else { //Если есть ошибки
echo "<div class='load'><div class='loading'></div><div class='errors'>".$log."</div></div>"; //Нельзя отправлять пустые сообщения
}
//Транслитирация кирилических символов
function cyrillic_translit($title) {
$iso9_table = array(
'А' => 'A', 'Б' => 'B', 'В' => 'V', 'Г' => 'G', 'Ѓ' => 'G',
'Ґ' => 'G', 'Д' => 'D', 'Е' => 'E', 'Ё' => 'YO', 'Є' => 'YE',
'Ж' => 'ZH', 'З' => 'Z', 'Ѕ' => 'Z', 'И' => 'I', 'Й' => 'J',
'Ј' => 'J', 'І' => 'I', 'Ї' => 'YI', 'К' => 'K', 'Ќ' => 'K',
'Л' => 'L', 'Љ' => 'L', 'М' => 'M', 'Н' => 'N', 'Њ' => 'N',
'О' => 'O', 'П' => 'P', 'Р' => 'R', 'С' => 'S', 'Т' => 'T',
'У' => 'U', 'Ў' => 'U', 'Ф' => 'F', 'Х' => 'H', 'Ц' => 'TS',
'Ч' => 'CH', 'Џ' => 'DH', 'Ш' => 'SH', 'Щ' => 'SHH', 'Ъ' => '',
'Ы' => 'Y', 'Ь' => '', 'Э' => 'E', 'Ю' => 'YU', 'Я' => 'YA',
'а' => 'a', 'б' => 'b', 'в' => 'v', 'г' => 'g', 'ѓ' => 'g',
'ґ' => 'g', 'д' => 'd', 'е' => 'e', 'ё' => 'yo', 'є' => 'ye',
'ж' => 'zh', 'з' => 'z', 'ѕ' => 'z', 'и' => 'i', 'й' => 'j',
'ј' => 'j', 'і' => 'i', 'ї' => 'yi', 'к' => 'k', 'ќ' => 'k',
'л' => 'l', 'љ' => 'l', 'м' => 'm', 'н' => 'n', 'њ' => 'n',
'о' => 'o', 'п' => 'p', 'р' => 'r', 'с' => 's', 'т' => 't',
'у' => 'u', 'ў' => 'u', 'ф' => 'f', 'х' => 'h', 'ц' => 'ts',
'ч' => 'ch', 'џ' => 'dh', 'ш' => 'sh', 'щ' => 'shh', 'ъ' => '',
'ы' => 'y', 'ь' => '', 'э' => 'e', 'ю' => 'yu', 'я' => 'ya'
);
$name = strtr($title, $iso9_table);
$name = preg_replace('~[^A-Za-z0-9\'_\-\.]~', '-', $name);
$name = preg_replace('~\-+~', '-', $name); // --- на -
$name = preg_replace('~^-+|-+$~', '', $name); // кил - на концах
return $name;
}
//Приведение введенного текста
function rec($pos) {
return (trim(stripslashes(htmlspecialchars(addslashes($pos)))));
}
?>
В success
возвращается json-объект
, т.к. такую форму вы выбрали для обмена данными в dataType
. В вашем случае преобразуйте ответ в строку функцией JSON.stringify(response)
.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
задался интересным вопросом какую конструкцию лучше использовать strObj или переменную , в интернете ничего не нашел по этому поводу дельного
ЗдравствуйтеХотел бы сразу сказать, что популярные дополнения для WP с формами мне не подходят и поэтому ищу способ отправки собственных...
Нужно достать число от 4-6 символом из строки, что бы после неё не стояло через любое кол-во пробелов "руб" или "руб" Делаю так: