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