jQuery AJAX页面刷新以显示更改,然后是消息反馈

时间:2013-02-07 07:43:32

标签: jquery ajax wordpress jquery-ui refresh

我有一个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按钮时是否可行。无论哪种方式,它都不会在刷新后处理响应。

谢谢,我感谢所有帮助。

1 个答案:

答案 0 :(得分: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>