У меня есть страница с двумя кнопками отправки, используя if ($_POST['action'] == 'Test SMS')
на выполненный код для моей кнопки «Проверить SMS». Мне нужно выполнить код из сценария PHP, а затем дать окно с предупреждением, не покидая страницу.
index.html
<form action="updateUserConfig.php" method="post">
<input type='submit' name='action' value='Test SMS' class='btn-test'>
<input type="submit" name="action" value="Save" class="btn btn-primary">
</form>
updateUserConfig.php
if ($_POST['action'] == 'Test SMS') { //action for Test SMS Button
//grab ntid and phone from header
if(isset($_POST['ntid'])) $ntid = $_POST['ntid'];
if(isset($_POST['phone'])) $phone = $_POST['phone'];
//using the notify_sms_users funtion from send_notification.php
require 'send_notification.php';
notify_sms_users(array($ntid), "", 4);
//alert user that there message has been sent
$alert = "Your message has been sent to " . $phone;
echo '<script type="text/javascript">alert("'.$alert.'");';
echo '</script>';
header('Location: index.php');
} else {-----action for other submit button------}
Я задал похожий вопрос, который был отмечен как дубликат на Оповещение после выполнения сценария php, не покидая текущей страницы но смог найти решение, поэтому я хотел поделиться.
Я смог сделать это, добавив строку запроса URL в моем header('location: index.php?text=success)
Затем с помощью JS я смог использовать оператор if для поиска строки запроса и предупреждения, если так.
index.html
<form action="updateUserConfig.php" method="post">
<input type='submit' name='action' value='Test SMS' class='btn-test'>
<input type="submit" name="action" value="Save" class="btn btn-primary">
</form>
<script type="text/javascript">
$(document).ready(function () {
if(window.location.href.indexOf("settings=success") > -1) {
alert("Your settings have been saved");
}
else if(window.location.href.indexOf("text=success") > -1) {
alert("A SMS has been sent!");
}
});
</script>
updateUserConfig.php
if ($_POST['action'] == 'Test SMS') { //action for Test SMS Button
//grab ntid and phone from header
if(isset($_POST['ntid'])) $ntid = $_POST['ntid'];
if(isset($_POST['phone'])) $phone = $_POST['phone'];
//using the notify_sms_users funtion from send_notification.php
require 'send_notification.php';
notify_sms_users(array($ntid), "", 4);
header('Location: index.php?text=success');
} else {-----action for other submit button------}
header('Location: index.php?settings=success');
Единственным недостатком этого решения является то, что у меня нет легкого доступа к моему PHP $phone
переменная, чтобы сообщить пользователю, на какой номер было отправлено сообщение.
AJAX — метод, наиболее подходящий для этой работы, потому что то, что вы пытаетесь достичь, — это взаимодействие с внешним интерфейсом. Php — это язык на стороне сервера.
AJAX будет передавать данные формы в бэкэнд-скрипт php. После того, как скрипт php обработает данные на сервере, он может вернуть требуемые данные в скрипт AJAX. Иногда это делается с использованием JSON, особенно если у вас несколько переменных.
$formdata = array(
'ntid' => $_POST['ntid'],
'phone' => $_POST['phone']
);
return json_encode($formdata);
Возвращенный код JSON будет выглядеть примерно так:
{"ntid":"NT ID","phone":"Phone number"}
Учебники, подобные этому, очень полезны:
[http://www.yourwebskills.com/ajaxintro.php][1]
Я обнаружил, что, отдохнув от основного проекта и потратив немного времени на изучение механики того, чего вы пытаетесь достичь, вы сможете быстрее решить свою проблему.