我正在使用一個(部分)停止工作的插件。作者沒有那麼敏感,所以我開始挖掘自己。WordPress的Ajax調用返回0
我已經到了認爲我知道問題出在哪裏的部分:ajax調用始終返回0。
如果有人能幫助我在這裏?
從插件AJAX調用:
var $this = $(this),
$parent = $this.parents('li'),
$container = $this.closest('.rwmb-uploaded'),
data = {
action: 'rwmb_delete_file',
_ajax_nonce: $container.data('delete_nonce'),
post_id: $('#post_ID').val(),
field_id: $container.data('field_id'),
attachment_id: $this.data('attachment_id'),
force_delete: $container.data('force_delete')
};
$.post(ajaxurl, data, function(r)
{
console.log(ajaxurl);
console.log(data);
console.log(r);
if (!r.success)
{
alert(r.data);
return;
}
$parent.addClass('removed');
// If transition events not supported
if (
!('ontransitionend' in window)
&& ('onwebkittransitionend' in window)
&& !('onotransitionend' in myDiv || navigator.appName == 'Opera')
)
{
$parent.remove();
$container.trigger('update.rwmbFile');
}
$('.rwmb-uploaded').on('transitionend webkitTransitionEnd otransitionend', 'li.removed', function()
{
$(this).remove();
$container.trigger('update.rwmbFile');
});
}, 'json');
return false;
的的console.log(r)返回0,另外兩個日誌填充有正確的值。
的Ajax調用PHP代碼:
static function add_actions()
{
// Add data encoding type for file uploading
add_action('post_edit_form_tag', array(__CLASS__, 'post_edit_form_tag'));
// Delete file via Ajax
add_action('wp_ajax_rwmb_delete_file', 'wp_ajax_delete_file');
}
static function wp_ajax_delete_file()
{
$post_id = isset($_POST['post_id']) ? intval($_POST['post_id']) : 0;
$field_id = isset($_POST['field_id']) ? $_POST['field_id'] : 0;
$attachment_id = isset($_POST['attachment_id']) ? intval($_POST['attachment_id']) : 0;
$force_delete = isset($_POST['force_delete']) ? intval($_POST['force_delete']) : 0;
check_ajax_referer("rwmb-delete-file_{$field_id}");
delete_post_meta($post_id, $field_id, $attachment_id);
$ok = $force_delete ? wp_delete_attachment($attachment_id) : true;
if ($ok)
wp_send_json_success();
else
wp_send_json_error(__('Error: Cannot delete file', 'rwmb'));
}
但似乎 'wp_ajax_delete_file' 從不執行。
我正在查看此代碼現在幾天沒有找到解決方案。我不熟悉ajax,所以我不知道可能的解決方案的可能性。
如果您需要別的東西,我很樂意提供。
您必須在ajax函數結束時使用die()函數來停止返回0值。 – ManoharSingh
'exit()'也行,它們是別名。 –