JavaScript — отправить — & gt; Выполнить скрипт PHP — & gt; Alert User — оставаясь на той же странице

У меня есть страница с двумя кнопками отправки, используя 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, не покидая текущей страницы но смог найти решение, поэтому я хотел поделиться.

0

Решение

Я смог сделать это, добавив строку запроса 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 переменная, чтобы сообщить пользователю, на какой номер было отправлено сообщение.

0

Другие решения

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]

Я обнаружил, что, отдохнув от основного проекта и потратив немного времени на изучение механики того, чего вы пытаетесь достичь, вы сможете быстрее решить свою проблему.

0

По вопросам рекламы [email protected]