JavaScript
6
Вклад в тег
js-form
для всех форм, использующих этот сценарий, а так же js-phone
для всех полей для ввода телефона.$(document).ready(function() {
"use strict";
var form = $(".js-form");
form.on("submit", function(e) {
var submit = form.find(".js-submit");
// Если Вам приходится генерировать HTML
// или модифицировать какие-либо текстовые значения,
// всегда лучше вынести их в константы
var SEND = "Отправить заявку";
var SENDING = "Идет отправка...";
var SENDING_COMPLETE = "Заявка отправлена";
function validatePhone() {
var phone = form.find(".js-phone");
try {
if (phone.val().length === 0) {
throw Error("Phone number can't be empty");
}
} catch (e) {
phone.css({
"border-color": "#ff4500"
});
setTimeout(function() {
// Возвращаем значение цвета обводки в
// предыдущее состояние
phone.css({
"border-color": "auto"
});
}, 500);
return false;
}
return true;
}
if (validatePhone() === true) {
var request = $.ajax({
url: "send.php",
method: "POST",
beforeSend: function() {
submit.attr({
"disabled": true,
"value": SENDING
});
}
});
request.done(function(response) {
response = $.trim(response);
if (response === "sent") {
submit.attr({
"value": SENDING_COMPLETE
// Возможно, здесь стоит убрать флаг disabled?
});
} else {
// По идее, если что-то идет не так, Ваш скрипт должен
// выкидывать исключение, которое вы бы обрабатывали в
// методе fail. Но пока вы этого не сделали, придется писать через
// if-else
submit.attr({
"disabled": false,
"value": SEND
});
}
});
request.fail(function(error) {
// Когда PHP скрипт будет выкидывать ошибку, вы будете обрабатывать её здесь.
console.error(error);
});
}
// Предотвращаем стандартную обработку форму
e.preventDefault();
});
});
server {
# Порт
listen 80;
# Имя сервера
server_name host.com;
# Путь до статики
root /var/www/;
# Все файлы, которые будут совпадать по маске со сл. рег. выр., будут
# обслуживаться nginx: сначало будет запрос как к файлу (например, host.com/js/main.js),
# если файла не будет, то запрос будет переформирован как к директории (host.com/js/main.js/),
# и если по прежнему ничего не найдено, вернется 404 ошибка
location ~* ^.+\.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar|3gp|mp4)$ {
try_files $uri $uri/ =404;
}
# Все остальные запросы, котоыре не подходят по маске статических файлов, описанных выше,
# будут перенаправлены на localhost.
# Первая строчка - адрес перенаправления, вторая - устанавливает заголовок Host. Если вы используете
# выделенный сервер и он используется только под один проект - её можно опустить.
location / {
proxy_pass http://localhost:1001;
proxy_set_header Host $host;
}
}