0

我有一个 Wordpress 列表表,每一行都有删除的选项。单击时<a class="delete_gallery" href="&action=delete">会弹出一个 jQueryUI 对话框。确认操作时,会发生 ajax 或其他什么,并处理一些服务器端的东西。成功后,我希望刷新页面并显示一条 wordpress 消息,说明删除成功。

我希望页面刷新的原因是因为我的 WP_List_Table 没有 ajaxified,我需要看到更改。

页面刷新后如何显示消息?我目前的方式在调用刷新后立即显示消息。我不想要延迟或任何东西:一旦单击对话框中的确认,我希望页面刷新,发生服务器端的事情,然后显示成功消息。

这是我的一些代码,为简单起见,删除了服务器端 var/info。注意:我使用的是 Wordpress 内置的 Ajax。

jQuery(".delete_gallery").click(function(event) {

    event.preventDefault();     
var link = jQuery(this).attr('href');
var link = link.substring(0, link.indexOf('?'));

jQuery("#deleteconf").dialog({
  height: 150,
  width: 350,
  resizable : false,
  modal: true,
  buttons: {
      "Delete all items": function() {
     jQuery(this).dialog("close");
        jQuery.post(
        MyAjax.ajaxurl,
        {
        action : 'delete_gallery',
        postCommentNonce : MyAjax.postCommentNonce,
        },
    function(response) {
        window.location.reload(link);   
        jQuery('#message p').html('The gallery was deleted successfully');
        jQuery('#message').show();      
    }); return false;

    },
    Cancel: function() {
    jQuery(this).dialog("close"); return false;
    }
}
}); 

});

这是最好的方法吗?如果是这样,我如何在刷新后显示消息。如果没有,最好的方法是什么?我真的很想使用 jQueryUI,我不希望有人必须单击“好的,项目已删除”来刷新页面并显示更改。

我有类似的东西,但它使用表单和 php 来捕获按钮提交 $_POST,我不确定在使用 jQueryUI 按钮时是否可行。无论哪种方式,它都不会处理刷新后的响应。

谢谢,我感谢所有帮助。

4

1 回答 1

0

差不多 7 个月后,我意外地解决了这个问题。

在 AJAX 响应成功时,我需要提交一个具有隐藏值的表单,而不是调用刷新,以显示我想要显示的消息。如果我希望消息是有条件的,我可以在表单提交之前简单地填充它。

html表单

<form action="" method="post" id="new-message-form">
    <input type="hidden" name="message" value="Success Message" />
</form>

ajax响应,成功

function(response) {      
    $('#new-message-form').submit();    
});

附加 jquery - 此代码获取所有 $_POST 并查看您想要的是否存在。

<script>
jQuery(document).ready(function($) {
    // grab all $_POST
    var post = <?php echo json_encode($_POST); ?>;

    // if $_POST is set
    if('message' in post) {
        $('.success').html(post['message']); // display contents in .success
    }
});
</script>
于 2013-09-04T04:07:15.217 回答