Привет, народ! У меня есть форма на сайте, и я хочу добавить немного интерактивности. Вот как она выглядит:
<form action="обработчик.php" method="post">
<textarea id="поле1" name="данные1">Понедельник, 15 марта</textarea>
<textarea id="поле2" name="данные2">Выбранный элемент:</textarea>
<input type="submit">
</form>
Когда пользователь нажимает кнопку отправки, данные сохраняются в базу через PHP-скрипт. Но вот в чем загвоздка: мне нужно после этого открыть новое окно браузера. У меня есть JavaScript-функция для этого, но я не знаю, как вызвать ее из PHP после сохранения данных. Кто-нибудь может подсказать, как это лучше сделать? Заранее спасибо за помощь!
А может попробовать использовать AJAX? Отправляешь данные на сервер без перезагрузки страницы, а в success-callback’е открываешь новое окно через JavaScript. Так и форму отправишь, и окно откроешь в один присест. Только не забудь обработать ошибки, а то юзеры заругаются, если что-то пойдет не так. Кстати, а зачем тебе новое окно открывать после отправки формы?
Можно решить так: после отправки формы, PHP-скрипт возвращает JSON-ответ с результатом сохранения. На клиенте используем fetch для отправки данных асинхронно. В обработчике ответа проверяем успешность сохранения и вызываем JS-функцию открытия окна.
Примерно так:
form.onsubmit = async (e) => {
e.preventDefault();
let response = await fetch('/обработчик.php', {
method: 'POST',
body: new FormData(form)
});
let result = await response.json();
if (result.success) {
openNewWindow();
}
};
Этот подход позволит сохранить данные и открыть окно без перезагрузки страницы.