Обновление части на странице без перезагрузки, после изенения
Цена договорная
Вопрос довольно простой, но у меня не хватает знаний.
На странице у меня проверка, если значение в поле в таблице 0, то
выводим кнопку, если 1, то скрываем, так вот после того как я нажал на
кнопку вернуть деньги, у меня идет запись в таблицу в бд, вместо 0, я
записываю 1, и я пытаюсь обновить данную проверку, чтобы скрыть кнопку,
ибо значение уже перезаписалось в таблице, следовательно надо как-то
обновить но не всю страницу, а только проверку, ниже изложил чтобы
понятно было.
Тут код лучше видно, добавил туда задание.
https://ru.stackoverflow.com/questions/1387969/%d0...
<?php if (empty($order->refunded)) : ?>
<form id="backM" action="/admin/backM/<?= $id ?>" method="post">
<input type="hidden" name="backM" value="1">
<button type="submit">Вернуть деньги</button>
<div class="message-backM"></div>
</form>
<?php endif; ?>
**Валидация и т.д**
jQuery(document).ready(function($) {
$(document).on('submit', '#backM', function(event) {
$('#backM .message-backM').html('');
let form = this;
event.preventDefault();
let formLoad = new FormData($(form)[0]);
formLoad.append('ajax', 1);
$.ajax({
url: $(this).attr('action'),
type: 'POST',
dataType: 'json',
data: formLoad,
beforeSend: function() {
App.showLoader();
},
complete: function() {
App.hideLoader();
},
success: function(d) {
if (d.status == 'success') {
//пытаюсь обновить проверку if, чтобы скрыть кнопку
**$('#refunded').text(d.data.refunded);**
App.hideLoader();
App.bootstrap.addAlert('#backM .message-backM', 'success', d.message);
}
if (d.status == 'error') {
App.bootstrap.addAlert('#backM .message-backM', 'error', d.message);
}
App.hideLoader();
},
error: function() {
App.hideLoader();
App.bootstrap.addAlert('#backM .message-backM', 'error', e.message);
},
cache: false,
contentType: false,
processData: false
});
});
});
**Контроллер**
public function action_backM()
{
$_isAjax = Arr::get($_POST, 'ajax', 1);
$id = (int)$this->request->param('id');
$orders = ORM::factory('Order', $id);
if (!empty($_isAjax)) {
$data = Arr::extract(
$_POST,
array(
'backM'
)
);
$orders->values($data);
try {
$orders->set('refunded', $data['backM']);
$orders->save();
/* отправляю новые данные после изменения */
$_data = array(
'refunded' => $orders->refunded,
);
die(json_encode([
'status' => 'success',
'data' => $_data,
'message' => 'Вы успешно сделали возврат денег.'
], JSON_UNESCAPED_UNICODE));
} catch (Exception $e) {
die(json_encode([
'status' => 'error',
'title' => 'Произошла ошибка, попробуйте повторить действия позже.',
'message' => $e->getMessage()
], JSON_UNESCAPED_UNICODE));
}
}
}
Вообщем в контролере я собираю новые данные после изменения и отправляю ajax
$_data = array(
'refunded' => $orders->refunded,
);
Далее в js, я их получаю и вывожу
$('#refunded').text(d.data.refunded);
Работает выводит цифру 1, все верно.
**Но мне не совсем это надо, мне не выводить надо цифру, а как-то в проверку подставлять (проверка ниже if (empty($order->refunded)), что уже не 0, а 1, как сделать?**
<?php if (empty($order->refunded)) : ?>
тут кнопка
<?php endif; ?>
На странице у меня проверка, если значение в поле в таблице 0, то
выводим кнопку, если 1, то скрываем, так вот после того как я нажал на
кнопку вернуть деньги, у меня идет запись в таблицу в бд, вместо 0, я
записываю 1, и я пытаюсь обновить данную проверку, чтобы скрыть кнопку,
ибо значение уже перезаписалось в таблице, следовательно надо как-то
обновить но не всю страницу, а только проверку, ниже изложил чтобы
понятно было.
Тут код лучше видно, добавил туда задание.
https://ru.stackoverflow.com/questions/1387969/%d0...
<?php if (empty($order->refunded)) : ?>
<form id="backM" action="/admin/backM/<?= $id ?>" method="post">
<input type="hidden" name="backM" value="1">
<button type="submit">Вернуть деньги</button>
<div class="message-backM"></div>
</form>
<?php endif; ?>
**Валидация и т.д**
jQuery(document).ready(function($) {
$(document).on('submit', '#backM', function(event) {
$('#backM .message-backM').html('');
let form = this;
event.preventDefault();
let formLoad = new FormData($(form)[0]);
formLoad.append('ajax', 1);
$.ajax({
url: $(this).attr('action'),
type: 'POST',
dataType: 'json',
data: formLoad,
beforeSend: function() {
App.showLoader();
},
complete: function() {
App.hideLoader();
},
success: function(d) {
if (d.status == 'success') {
//пытаюсь обновить проверку if, чтобы скрыть кнопку
**$('#refunded').text(d.data.refunded);**
App.hideLoader();
App.bootstrap.addAlert('#backM .message-backM', 'success', d.message);
}
if (d.status == 'error') {
App.bootstrap.addAlert('#backM .message-backM', 'error', d.message);
}
App.hideLoader();
},
error: function() {
App.hideLoader();
App.bootstrap.addAlert('#backM .message-backM', 'error', e.message);
},
cache: false,
contentType: false,
processData: false
});
});
});
**Контроллер**
public function action_backM()
{
$_isAjax = Arr::get($_POST, 'ajax', 1);
$id = (int)$this->request->param('id');
$orders = ORM::factory('Order', $id);
if (!empty($_isAjax)) {
$data = Arr::extract(
$_POST,
array(
'backM'
)
);
$orders->values($data);
try {
$orders->set('refunded', $data['backM']);
$orders->save();
/* отправляю новые данные после изменения */
$_data = array(
'refunded' => $orders->refunded,
);
die(json_encode([
'status' => 'success',
'data' => $_data,
'message' => 'Вы успешно сделали возврат денег.'
], JSON_UNESCAPED_UNICODE));
} catch (Exception $e) {
die(json_encode([
'status' => 'error',
'title' => 'Произошла ошибка, попробуйте повторить действия позже.',
'message' => $e->getMessage()
], JSON_UNESCAPED_UNICODE));
}
}
}
Вообщем в контролере я собираю новые данные после изменения и отправляю ajax
$_data = array(
'refunded' => $orders->refunded,
);
Далее в js, я их получаю и вывожу
$('#refunded').text(d.data.refunded);
Работает выводит цифру 1, все верно.
**Но мне не совсем это надо, мне не выводить надо цифру, а как-то в проверку подставлять (проверка ниже if (empty($order->refunded)), что уже не 0, а 1, как сделать?**
<?php if (empty($order->refunded)) : ?>
тут кнопка
<?php endif; ?>
Отзывы
В заказе есть исполнитель
При переводе заказа из архивного в актуальный, текущий исполнитель будет снят с задачи.
Выберите тип сделки
С безопасной сделкой вы всегда сможете вернуть средства, если что-то пойдет не так. С простой сделкой вы самостоятельно договариваетесь с исполнителем об оплате и берете на себя решение конфликтов.