Обновление содержимого сайта после AJAX-вызова без перезагрузки страницы
Я создал PHP-функцию, которая удаляет продукт с идентификатором, переданным через AJAX-вызов:
function deleteSelectedProduct()
{
// Если установлен и не пустой параметр productToDelete
if ( isset($_POST['productToDelete']) && ! empty($_POST['productToDelete']) ) {
$postId=$_POST['productToDelete'];
wp_delete_post($postId);
}
die();
}
Мой AJAX-вызов выглядит так:
$.ajax({
data: sampleData,
type: 'POST',
url: AjaxObject.ss_ajax_url,
success: function(msg) {
window.location.reload(true);
}
});
Как видите, я выполняю перезагрузку страницы с помощью window.location.reload(true);
, чтобы обновить список продуктов на странице (так как продукт был только что удален).
Есть ли простой способ обновить содержимое страницы без перезагрузки?
Одно из решений, о котором я подумал, заключается в изменении PHP-скрипта так, чтобы он использовал буферизацию вывода:
function deleteSelectedProduct()
{
// Если установлен и не пустой параметр productToDelete
if ( isset($_POST['productToDelete']) && ! empty($_POST['productToDelete']) ) {
$postId=$_POST['productToDelete'];
wp_delete_post($postId);
}
ob_start();
include 'some_page.php';
$response = ob_clean();
echo $response;
die();
}
Я не уверен, что это правильный путь. Буду признателен за ваш совет.
Вам нужно использовать ID товара в качестве класса в вашем HTML, а затем вы можете сделать:
$.ajax({
data: sampleData,
type: 'POST',
url: AjaxObject.ss_ajax_url,
success: function(msg) {
$( '.product-' + sampleData.productToDelete ).remove();
}
});
Если у вас есть счетчики на странице, вам также нужно будет их обновить. Кроме того, если у вас есть пагинация, которая не генерируется через какой-либо JavaScript-фреймворк, то лучше всего просто перезагружать страницу по мере необходимости.
