Я делаю 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>
Спасибо.
Вы не хотите делать живое обновление с переменными PHP, так как они обновляются только при перезагрузке страницы. Вместо этого вы хотите обновить значение элемента через AJAX. Насколько я могу судить, вы хотите обновить срок годности. Если вы этого не сделаете, просто дайте мне знать, и я могу изменить код на то, что он должен делать.
Вот «поток управления» этой функциональности:
Вот как это сделать в 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 и строку кода для обновления элемента.
Надеюсь, я помог!
Вам нужно добавить обратный вызов — 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>
Измените только функцию успеха, как показано ниже
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'