Я использую Laravel в своем проекте. У меня есть ваучер, который поддерживает статус. Я использовал AJAX для изменения статуса, и код AJAX работает успешно.
Однако статус, на мой взгляд, не менялся до тех пор, пока я не обновил страницу. Я ищу способ решить эту проблему.
<button class="btn btn-link p-0 change" type="submit" data-id="{{ $voucher->id }}">
@if ($voucher->status == 1)
<i class="fa fa-toggle-on text-success"></i>
@else
<i class="fa fa-toggle-off text-muted"></i>
@endif
</button>
@if ($voucher->status == 1)
<span class="badge badge-soft-success">
enable
</span>
@else
<span class="badge badge-soft-pink">
disbale
</span>
@endif
$(".change").click(function() {
var id = $(this).data("id");
$.ajax({
url: "vouchers/change-status/" + id,
type: 'put',
dataType: "JSON",
data: {
"id": id,
"_method": 'put',
"_token": "{{ csrf_token() }}",
},
success: function() {
console.log("it Work");
// $("tr#"+id).remove();
}
});
console.log("It failed");
});
3 ответа
Вы можете попробовать так:
< Сильный > Клинок
Оберните свой код в каком-то держателе классом status-enabled
, когда статус равен 1
. Установите специальные классы для элементов, которые будут видны или не соответствуют статусу.
<div class="holder @if($voucher->status == 1) status-enabled @endif">
<button class="btn btn-link p-0 change" type="submit" data-id="{{ $voucher->id }}">
<i class="fa fa-toggle-on text-success enabled-visible"></i>
<i class="fa fa-toggle-off text-muted enabled-invisible"></i>
</button>
<span class="badge badge-soft-success enabled-visible">
enable
</span>
<span class="badge badge-soft-pink enabled-invisible">
disbale
</span>
</div>
< Сильный > CSS
Установить правила:
.holder .enabled-visible {
display: none;
}
.holder .enabled-invisible {
display: inline-block;
}
.holder.status-enabled .enabled-visible {
display: inline-block;
}
.holder.status-enabled .enabled-invisible {
display: none;
}
< Сильный > JS
Переключить класс владельца, когда вы успешно измените статус.
$(".change").click(function() {
var id = $(this).data("id");
$.ajax({
url: "vouchers/change-status/" + id,
type: 'put',
dataType: "JSON",
data: {
"id": id,
"_method": 'put',
"_token": "{{ csrf_token() }}",
},
success: function() {
$(this).closest('.holder').toggleClass('status-enabled');
}
});
console.log("It failed");
});
Html Tag не нужно, если условие php blade.
<button class="btn btn-link p-0 change" type="submit" data-id="{{ $voucher->id }}">
@if ($voucher->status == 1)
<i class="fa fa-toggle-on text-success"></i>
@else
<i class="fa fa-toggle-off text-muted"></i>
@endif
</button>
<div id="alert-message"></div> // add this line
@endrole
Измените этот код в свой код. файл сценария
$(".change").click(function() {
var id = $(this).data("id");
var success = '<span class="badge badge-soft-success">' +
'enable' +
'</span>';
var failed = '<span class="badge badge-soft-pink">' +
'disbale' +
'</span>';
$.ajax({
url: "vouchers/change-status/" + id,
type: 'put',
dataType: "JSON",
data: {
"id": id,
"_method": 'put',
"_token": "{{ csrf_token() }}",
},
success: function() {
console.log("it Work");
$('#alert-message').html(success);
// $("tr#"+id).remove();
}
});
$('#alert-message').html(failed);
});
Просто в вашей функции успеха:
success: function() {
console.log("it Work");
$("i.fa-toggle-on).hide();
$("i.fa-toggle-off).show();
}
Похожие вопросы
Связанные вопросы
Новые вопросы
javascript
По вопросам программирования на ECMAScript (JavaScript/JS) и его различных диалектах/реализациях (кроме ActionScript). Обратите внимание, что JavaScript — это НЕ Java. Включите все теги, относящиеся к вашему вопросу: например, [node.js], [jQuery], [JSON], [ReactJS], [angular], [ember.js], [vue.js], [typescript], [стройный] и т. д.