Actualizarea conținutului site-ului după un apel AJAX fără reîncărcarea paginii
Am creat această funcție PHP care șterge un produs cu un id transmis printr-un apel AJAX:
function deleteSelectedProduct()
{
if ( isset($_POST['productToDelete']) && ! empty($_POST['productToDelete']) ) {
$postId=$_POST['productToDelete'];
wp_delete_post($postId);
}
die();
}
Apelul meu AJAX arată astfel:
$.ajax({
data: sampleData,
type: 'POST',
url: AjaxObject.ss_ajax_url,
success: function(msg) {
window.location.reload(true);
}
});
După cum puteți vedea, execut o reîncărcare a paginii cu window.location.reload(true);
pentru a reîmprospăta o listă de produse pe o pagină (deoarece un produs tocmai a fost șters).
Există o modalitate simplă de a actualiza conținutul paginii fără o reîncărcare a acesteia?
Una dintre soluțiile la care m-am gândit ar fi modificarea scriptului PHP astfel încât să utilizeze output buffering:
function deleteSelectedProduct()
{
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();
}
Nu sunt sigur dacă aceasta este calea de urmat. Aș aprecia sfatul vostru.
Va trebui să utilizați ID-ul produsului ca nume de clasă în HTML-ul vostru și apoi puteți face:
$.ajax({
data: sampleData,
type: 'POST',
url: AjaxObject.ss_ajax_url,
success: function(msg) {
$( '.product-' + sampleData.productToDelete ).remove();
}
});
Dacă aveți numărătoare pe pagină, va trebui să vă ocupați și de aceasta. De asemenea, dacă aveți paginare care nu este generată printr-un framework JavaScript, cea mai bună soluție este să continuați să reîncărcați pagina după necesități.
