在不重新加载页面的情况下,在AJAX调用后更新站点内容

时间:2015-03-17 作者:luqo33

我创建了这个PHP函数,用于删除通过AJAX调用传递id的产品:

function deleteSelectedProduct() 
{
   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() 
{
   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();
}
我不确定这是不是一条路。我很感激你的建议。

1 个回复
最合适的回答,由SO网友:DiverseAndRemote.com 整理而成

您需要在html中使用产品id作为类名,然后可以执行以下操作:

$.ajax({
    data: sampleData,
    type: \'POST\',
    url: AjaxObject.ss_ajax_url,
    success: function(msg) {
        $( \'.product-\' + sampleData.productToDelete ).remove();
    }               
});
如果你在页面上有任何计数,你也需要弄清楚。此外,如果您的分页不是通过某个javascript框架生成的,那么最好的办法就是继续根据需要重新加载页面。

结束

相关推荐

WordPress插入不能与AJAX一起使用

我试图在wordpress中以表单形式输入插入数据,并希望使用ajax来实现这一点。如果没有ajax,它工作得很好,但当我使用ajax时,按submit按钮得到的结果为0,数据不会插入到数据库中。下面是我的代码。Html代码位于表单标记之间,如下所示<form id=\"insertform\" action=\"\" method=\"post\"> <input id=\"user\" style=\"height: 30px;\" name=\"user\" type=\"