Обновление переменной PHP после вызова Ajax

Я делаю Ajax-вызов PHP-файла, который проверяет условие и выполняет запрос MySQL, если условия выполнены.

Запрос обновляет таблицу в моей БД с новым значением. Это все прекрасно работает. Я хотел бы знать, как показать новое значение на текущей странице без необходимости перезагрузки вручную. Код ниже.

Переменная, которую я обновляю, $ trialExpiry

HTML / PHP

<h4 class="sbText mt-10">Trial End Date: <?php echo date("d/m/Y",
strtotime($trialExpiry)); ?></h4>

<form id='promocode'>
<input type='text' class='sbInput' placeholder='Promo Code' name='promocode'>
<input type='hidden' name='userid' value='<?php echo $userID; ?>'>
<button class='btn sbSubmit'>Submit</button>
</form>

Jquery

   <script>
$(function () {
$('#promocode').on('submit', function (e) {
e.preventDefault();
$.ajax({
type: 'post',
url: '../model/process-promo-code.php',
data: $('#promocode').serialize(),
success: function () {
$("button.btn").css({
'transition-duration': '1000ms',
'opacity': '0.5'
});
}
});
});
});
</script>

Спасибо.

2

Решение

Вы не хотите делать живое обновление с переменными PHP, так как они обновляются только при перезагрузке страницы. Вместо этого вы хотите обновить значение элемента через AJAX. Насколько я могу судить, вы хотите обновить срок годности. Если вы этого не сделаете, просто дайте мне знать, и я могу изменить код на то, что он должен делать.

Вот «поток управления» этой функциональности:

  1. (Точка входа) Пользователь нажимает «Отправить», запускается обработчик событий jQuery
  2. Вызывается функция jQuery AJAX, которая отправляет промо-код в скрипт PHP
  3. В сценарии PHP база данных обновляется промо-кодом.
  4. PHP-скрипт возвращает новую дату истечения срока действия (я предполагаю, что она в нужном вам формате d / m / Y)
  5. Обратный вызов в функции jQuery AJAX получает данные из скрипта.
  6. Тело функции обратного вызова обновляет элемент «Expiry» на странице значением из вызова PHP.

Вот как это сделать в HTML / JavaScript:

<h4 class="sbText mt-10" id="expiry_label">
Trial End Date: <?php echo date("d/m/Y",
strtotime($trialExpiry)); // The initial value can be displayed as normal. ?>
</h4>

<form id='promocode'>
<input type='text' class='sbInput' placeholder='Promo Code' name='promocode'>
<input type='hidden' name='userid' value='<?php echo $userID; ?>'>
<button class='btn sbSubmit'>Submit</button>
</form>

<script>
$(function () {
$('#promocode').on('submit', function (e) {
e.preventDefault();
$.ajax({
type: 'post',
url: '../model/process-promo-code.php',
data: $('#promocode').serialize(),
success: function (result) {
$("button.btn").css({
'transition-duration': '1000ms',
'opacity': '0.5'
});
document.getElementById("expiry_label").innerHTML = "Trial End Date: " + result;
}
});
});
});
</script>

Как видите, я только добавил атрибут «id» к элементу, параметр к свойству «success» вызова AJAX и строку кода для обновления элемента.

Надеюсь, я помог!

2

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

Вам нужно добавить обратный вызов — IE

 <script>
$(function () {
$('#promocode').on('submit', function (e) {
e.preventDefault();
$.ajax({
type: 'post',
url: '../model/process-promo-code.php',
data: $('#promocode').serialize(),
success: function (data) {  //<----  CALLBACKalert(data); // data contains the return from the ajax call

$("button.btn").css({
'transition-duration': '1000ms',
'opacity': '0.5'
});
}
});
});
});
</script>
2

Измените только функцию успеха, как показано ниже

  success: function (data) {  //<----  CALLBACK$('input["name='userid' "]').val(data); // data contains the return from the ajax call

$("button.btn").css({
'transition-duration': '1000ms',
'opacity': '0.5'
0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector