Stack технологий - Nodejs, EJS, MongoDB, jQuery.
Есть форма регистрации, после нажатия на кнопку "Отправить" необходимо чтобы пользователь был зареган в базе и появлялось модальное окно (к примеру: подтверждение смс-кода). Если есть похожием темы, или где-то почитать - прикрепите ссылки пожалуйста.
EJS-форма регистрации:
<form class="needs-validation" enctype="multipart/form-data" novalidate>
<div class="row">
<div class="col-lg-12">
<div class="md-form form-sm df-form-line">
<input type="text" id="login" class="form-control text-input" name="login" required>
<label for="login">Логин <span class="required">*</span></label>
<div class="invalid-feedback text-right">
Напишите, пожалуйста, логин.
</div>
</div>
</div>
<div class="col-lg-12">
<div class="md-form form-sm df-form-line">
<!--<input type="password" id="password" class="form-control text-input" required>-->
<input type="password" class="form-control text-input" name="password" required>
<label for="password">Пароль <span class="required">*</span></label>
<div class="invalid-feedback text-right">
Минимум 8 символов.
</div>
</div>
</div>
<div class="col-lg-6">
<div class="md-form form-sm df-form-line">
<input type="text" id="surname" class="form-control text-input" name="lastname"
required>
<label for="surname">Фамилия <span class="required">*</span></label>
<div class="invalid-feedback text-right">
Напишите, пожалуйста, Вашу фамилию.
</div>
</div>
</div>
<div class="col-lg-6">
<div class="md-form form-sm df-form-line">
<input type="text" id="name" class="form-control text-input" name="name"
required>
<label for="name">Имя <span class="required">*</span></label>
<div class="invalid-feedback text-right">
Напишите, пожалуйста, Ваше имя.
</div>
</div>
</div>
<div class="col-lg-12">
<div class="md-form form-sm df-form-line">
<input type="email" id="email" name="email" class="form-control text-input">
<label for="email">Электронная почта</label>
<div class="invalid-feedback text-right">
Укажите Вашу электронную почту.
</div>
</div>
</div>
<div class="col-lg-12 mb-3">
<div class="md-form form-sm df-form-line">
<input type="text" class="form-control "
name="phone" required>
<!--<label for="phone">Телефон <span class="required">*</span></label>-->
<div class="invalid-feedback text-right">
Укажите Ваш номер телефона.
</div>
</div>
</div>
<div class="col-lg-6 mb-3">
<div class="mb-1">
<p class="f-small">Ваш пол</p>
</div>
<div class="form-check mb-1">
<input class="form-check-input" type="radio" name="sex" id="exampleRadios1"
value="false" checked>
<label class="form-check-label" for="exampleRadios1">
Женский
</label>
</div>
<div class="form-check mb-1">
<input class="form-check-input" type="radio" name="sex" id="exampleRadios2"
value="true">
<label class="form-check-label" for="exampleRadios2">
Мужской
</label>
</div>
</div>
<div class="col-lg-6 mb-3">
<div class="mb-1">
<p class="f-small">Дата рождения <span class="required">*</span></p>
</div>
<div class="md-form">
<input placeholder="Календарь" type="date" name="birthDate"
id="date-picker" class="form-control datepicker" required>
<label for="date-picker"></label>
<div class="invalid-feedback text-right">
Укажите дату рождения.
</div>
</div>
</div>
<div class="col-lg-12 mb-4">
<div class="control-group">
<select id="select-beast" class="demo-default" name="city">
<option value="">Город проживания</option>
<% city.forEach(function(cities){ %>
<option data-values='<%- cities.id %>'>
<%= cities.name %>
</option>
<% }); %>
</select>
</div>
</div>
<div class="col-lg-12 mb-4">
<div class="mb-1">
<p class="f-small">Вид аккаунта</p>
</div>
<div class="row">
<div class="col-lg-6">
<div class="form-check mb-1">
<input class="form-check-input" type="radio" name="kind"
id="searchTrenerRadios" value="Sportsman" checked>
<label class="form-check-label" for="searchTrenerRadios">
Ищу тренера
</label>
</div>
</div>
<div class="col-lg-6">
<div class="form-check mb-1">
<input class="form-check-input" type="radio" name="kind"
id="trenerRadios" value="Coach">
<label class="form-check-label" for="trenerRadios">
Тренерую
</label>
</div>
</div>
</div>
</div>
<div class="col-lg-12 tac">
<button type="button" class="btn btn-df btn-rounded waves-effect waves-light btn-registration"
value="" data-toggle="modal" data-target="#socialModal">Регистрация
</button>
</div>
</div>
</form>
Мой route:
router.post('/user/registration', controller.registration);
И к нему продолжение:
registration: function (req, res, next) {
userController.registration(req, res, next, function (err, user) {
req.user.id = user.id;
userController.phoneCreate(req,res,next);
});
},
Собственно, хочу сделать аякс-запросом, чтобы когда нажал на кнопку появлялось модальное окно. apiRequest - кастомная(универсальная) функция, которая парсит и формирует наш запрос.
$(".btn-registration").click(function () {
derzyfit.apiRequest({
url: "/user/registration",
type: "POST",
// data: JSON.stringify(data)
}, function (res) {
// $(".btn-registration").html(res);
})
});
Подскажите с чего начать, пожалуйста. [Убрал type="submit",и из form атрибуты method и action]
Если правильно понял вопрос, то это поможет
let modal = $('#modal-form')
modal.find('.modal-body').empty().append(data)
modal.find('button.save').off('click').on('click', function () {
let data = modal.find('form').serializeObject()
$.ajax({
type: 'POST',
url: '/regions',
data: JSON.stringify(data),
headers: {
'X-CSRF-TOKEN': token
},
contentType: 'application/json; charset=utf-8',
success: function (result) {
if (result.status === 'ok') {
modal.modal('hide')
$('#directory-regions').trigger('click')
return
}
renderRegionForm(result)
}
})
})
modal.modal('show')
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости