Будучи новичком в AJAX, я столкнулся с этой проблемой и не смог решить ее. Я хочу, чтобы моя таблица обновлялась после публикации сообщения ajax для проверки объекта, все, что я пробовал, было бесполезно.
Предположим, что ответ ajax является результатом JSON, чтобы не публиковать мой код OnPost()
.
Я отправляю Id продукта, используя ajax, а затем использую этот Id для удаления продукта.
Затем я вызываю тот же метод, который OnGet()
использует для заполнения таблиц, которые возвращают обновленный список. Я вижу, что в инструментах отладки Chrome ответ успешно возвращается с обновленным списком. Я просто не знаю, как донести это до моего списка. Заранее спасибо, ребята.
@Html.AntiForgeryToken()
<table id="shoppingBag" class="table">
<thead>
<tr>
<th scope="col">Item</th>
<th scope="col">Price</th>
<th scope="col">Quantity</th>
</tr>
</thead>
<tbody>
@foreach (var item in Model.ShoppingBagItems)
{
<tr>
<td>
@item.Product.Name
</td>
<td>
@item.Price.ToString("C")
</td>
<td>
<input value="@item.Quantity" size="1" maxlength="1" class="text-center" />
</td>
<td>
<button onclick="remove(@item.Product.Id.ToString())" class="close">
<span aria-hidden="true">×</span>
</button>
</td>
</tr>
}
</tbody>
</table>
<script>
function remove(id) {
$.ajax({
type: 'POST',
url: 'ShoppingBag?handler=Delete',
headers: {
"XSRF-TOKEN": $('input:hidden[name="__RequestVerificationToken"]').val()
},
contentType: 'application/json; charset=utf-8',
dataType: 'json',
data: ''+id+'',
sucess: function (response) {
append_json(response);
}
});
}
function append_json(data){
var table = document.getElementById('shoppingBag');
data.forEach(function(object) {
var tr = document.createElement('tr');
tr.innerHTML = '<td>' +
object.product.name +
'</td>' +
'<td>' +
object.price +
'</td>' +
'<td>' +
object.quantity +
'</td>';
table.appendChild(tr);
});
}
</script>