Я пытаюсь заставить эту контактную форму работать: https://bootstrapious.com/p/how-to-build-a-working-bootstrap-contact-form но текст подтверждения открывается на новом сайте вместо div «сообщения».
контакт.php
<form id = "contact-form" method = "post" action = "contactaction.php" role = "form" data-toggle = "validator">
<div class = "messages"></div>
<script src = "https://code.jquery.com/jquery-3.3.1.slim.min.js"></script>
<script src = "https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js"></script>
<script src = "https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"></script>
<script src = "https://cdnjs.cloudflare.com/ajax/libs/1000hz-bootstrap-validator/0.11.9/validator.min.js"></script>
<script src = "contact.js"></script>
контакт.js
$(function () {
// init the validator
$('#contact-form').validator();
// when the form is submitted
$('#contact-form').on('submit', function (e) {
// if the validator does not prevent form submit
if (!e.isDefaultPrevented()) {
var url = "contact.php";
// POST values in the background the the script URL
$.ajax({
type: "POST",
url: url,
data: $(this).serialize(),
success: function (data)
{
// data = JSON object that contact.php returns
// we recieve the type of the message: success x danger and apply it to the
var messageAlert = 'alert-' + data.type;
var messageText = data.message;
// let's compose Bootstrap alert box HTML
var alertBox = '<div class = "alert ' + messageAlert + ' alert-dismissable"><button type = "button" class = "close" data-dismiss = "alert" aria-hidden = "true">×</button>' + messageText + '</div>';
// If we have messageAlert and messageText
if (messageAlert && messageText) {
// inject the alert to .messages div in our form
$('#contact-form').find('.messages').html(alertBox);
// empty the form
$('#contact-form')[0].reset();
}
}
});
return false;
}
})
});
Просто используйте e.preventDefault(); как первый шаг функции onsubmit:
// when the form is submitted
$(function () {
// init the validator
$('#contact-form').validator();
// when the form is submitted
$('#contact-form').on('submit', function (e) {
e.preventDefault();
// if the validator does not prevent form submit
var url = "contact.php";
// POST values in the background the the script URL
$.ajax({
type: "POST",
url: url,
data: $(this).serialize(),
success: function (data)
{
// data = JSON object that contact.php returns
// we recieve the type of the message: success x danger and apply it to the
var messageAlert = 'alert-' + data.type;
var messageText = data.message;
// let's compose Bootstrap alert box HTML
var alertBox = '<div class = "alert ' + messageAlert + ' alert-dismissable"><button type = "button" class = "close" data-dismiss = "alert" aria-hidden = "true">×</button>' + messageText + '</div>';
// If we have messageAlert and messageText
if (messageAlert && messageText) {
// inject the alert to .messages div in our form
$('#contact-form').find('.messages').html(alertBox);
// empty the form
$('#contact-form')[0].reset();
}
}
});
return false;
})
});
В вашем примере contact.php на самом деле нет ничего, на что можно было бы опереться. Я просто скопировал весь html-код файла примера из того, на что вы ссылались: bootstrapious.com/p/… Затем добавил в приведенный выше скрипт, и он у меня работает. По крайней мере, он проверяет, а затем запускает вызов AJAX для contact.php. Но вы не добавили никакого кода, чтобы показать, для чего он предназначен @Bennobear Возможно, вы хотите поделиться дополнительным кодом и рассказать нам, что не работает
Что у вас есть в contact.js?