Anonymous
Mehrere Daten werden mit AJAX in WordPress nicht aus der Tabelle gelöscht
Post
by Anonymous » 02 Jun 2025, 16:07
Ich habe das folgende Skript zum Löschen mehrerer Daten definiert. Bitte überprüfen Sie das beigefügte Bild. Ich werde mehrere Titel ausgewählt und klicken, um gelöschte Title -Taste zu löschen. Ich habe das Protokoll überprüft, das den folgenden Fehler angezeigt wird. Ich kann nicht verstehen, wie ich diesen Fehler
beheben kann. (%d,%d)
für das Löschen empfangene IDs: 0 < /p>
PHP -Skript < /strong> < /p>
Code: Select all
public function otslf_delete_multiple_blog_title() {
//check_ajax_referer('ai-seo-content-nonce', 'nonce');
if ( ! isset( $_POST['nonce'] ) || ! wp_verify_nonce( sanitize_text_field( wp_unslash( $_POST['nonce'] ) ), 'ai-seo-content-nonce' ) ) {
wp_send_json_error( __( 'Invalid nonce.', 'super-fast-blog-ai' ) );
}
error_log( $_POST['nonce'] ); // Debugging line
global $wpdb;
$table_name = $wpdb->prefix . 'slf_schedule_post_title_log';
$ids = isset($_POST['id']) ? array_map('intval', $_POST['id']) : [];
error_log('IDs received for deletion: ' . print_r($ids, true)); // Debugging line
$placeholders = implode(',', array_fill(0, count($ids), '%d'));
$query = "DELETE FROM $table_name WHERE id IN ($placeholders)";
error_log('check error: ' . $placeholders); // Debugging line
error_log('Prepared query for deletion: ' . $query); // Debugging line
$deleted = $wpdb->query($wpdb->prepare($query, $ids)); // phpcs:ignore WordPress.DB.DirectDatabaseQuery
error_log('IDs received for deletion: ' . $deleted);
if ($deleted !== false) {
wp_send_json_success(['message' => 'Selected titles deleted successfully.']);
} else {
wp_send_json_error(['message' => 'Failed to delete selected titles.']);
}
}
JQuery -Skript [/b]
Code: Select all
jQuery(document).ready(function($) {
jQuery('#select_title').click(function() {
let isChecked = jQuery(this).is(':checked');
jQuery('input[name="select_title[]"]').prop('checked', isChecked);
});
jQuery('#delete-selected').click(function(e) {
e.preventDefault();
let id = jQuery('input[name="select_title[]"]:checked').map(function() {
return jQuery(this).val();
}).get();
console.log('Selected IDs:', id);
if (id.length === 0) {
jQuery.toast({ text: "Please select at least one title to delete.",
heading: 'Failed',
icon: 'error',
showHideTransition: 'fade',
allowToastClose: true,
hideAfter: 3000,
stack: 5,
position: 'top-right',
});
}
jQuery.ajax({
url: ajax_ob.ajax_url,
type: 'POST',
data: {
action: 'otslf_delete_multiple_blog_title',
id: id,
nonce: ajax_ob.nonce
},
beforeSend: function(xhr) {
jQuery('#delete-selected').append('');
},
success: function(response) {
console.log('Response:', response);
if (response.success) {
jQuery('input[name="select_title[]"]:checked').closest('tr').remove();
jQuery.toast({
text: "!Selected Title Deleted Successfully",
heading: 'success',
icon: 'success',
showHideTransition: 'fade',
allowToastClose: true,
hideAfter: 4000,
stack: 15,
position: { left : 'auto', right : 100, top : 153, bottom : 'auto' },
textAlign: 'left',
loader: true,
loaderBg: '#9EC600',
});
/* setTimeout(function() {
location.reload();
}, 2000); */
} else {
jQuery.toast({ text: "Please select at least one title to delete.",
heading: 'Failed',
icon: 'error',
showHideTransition: 'fade',
allowToastClose: true,
hideAfter: 3000,
stack: 5,
position: 'top-right',
});
}
},
complete: function() {
jQuery('#delete-selected').find('.loading-spinner').remove();
},
error: function(xhr, status, error) {
jQuery.toast({ text: 'An error occurred: ' + error,
heading: 'NOTE',
icon: 'error',
showHideTransition: 'fade',
allowToastClose: true,
hideAfter: 3000,
stack: 5,
position: 'top-right',
});
}
});
});
});
1748873261
Anonymous
Ich habe das folgende Skript zum Löschen mehrerer Daten definiert. Bitte überprüfen Sie das beigefügte Bild. Ich werde mehrere Titel ausgewählt und klicken, um gelöschte Title -Taste zu löschen. Ich habe das Protokoll überprüft, das den folgenden Fehler angezeigt wird. Ich kann nicht verstehen, wie ich diesen Fehler [url=viewtopic.php?t=23756]beheben[/url] kann. (%d,%d) für das Löschen empfangene IDs: 0 < /p> [b] PHP -Skript < /strong> < /p> [code]public function otslf_delete_multiple_blog_title() { //check_ajax_referer('ai-seo-content-nonce', 'nonce'); if ( ! isset( $_POST['nonce'] ) || ! wp_verify_nonce( sanitize_text_field( wp_unslash( $_POST['nonce'] ) ), 'ai-seo-content-nonce' ) ) { wp_send_json_error( __( 'Invalid nonce.', 'super-fast-blog-ai' ) ); } error_log( $_POST['nonce'] ); // Debugging line global $wpdb; $table_name = $wpdb->prefix . 'slf_schedule_post_title_log'; $ids = isset($_POST['id']) ? array_map('intval', $_POST['id']) : []; error_log('IDs received for deletion: ' . print_r($ids, true)); // Debugging line $placeholders = implode(',', array_fill(0, count($ids), '%d')); $query = "DELETE FROM $table_name WHERE id IN ($placeholders)"; error_log('check error: ' . $placeholders); // Debugging line error_log('Prepared query for deletion: ' . $query); // Debugging line $deleted = $wpdb->query($wpdb->prepare($query, $ids)); // phpcs:ignore WordPress.DB.DirectDatabaseQuery error_log('IDs received for deletion: ' . $deleted); if ($deleted !== false) { wp_send_json_success(['message' => 'Selected titles deleted successfully.']); } else { wp_send_json_error(['message' => 'Failed to delete selected titles.']); } } [/code] JQuery -Skript [/b] [code]jQuery(document).ready(function($) { jQuery('#select_title').click(function() { let isChecked = jQuery(this).is(':checked'); jQuery('input[name="select_title[]"]').prop('checked', isChecked); }); jQuery('#delete-selected').click(function(e) { e.preventDefault(); let id = jQuery('input[name="select_title[]"]:checked').map(function() { return jQuery(this).val(); }).get(); console.log('Selected IDs:', id); if (id.length === 0) { jQuery.toast({ text: "Please select at least one title to delete.", heading: 'Failed', icon: 'error', showHideTransition: 'fade', allowToastClose: true, hideAfter: 3000, stack: 5, position: 'top-right', }); } jQuery.ajax({ url: ajax_ob.ajax_url, type: 'POST', data: { action: 'otslf_delete_multiple_blog_title', id: id, nonce: ajax_ob.nonce }, beforeSend: function(xhr) { jQuery('#delete-selected').append(''); }, success: function(response) { console.log('Response:', response); if (response.success) { jQuery('input[name="select_title[]"]:checked').closest('tr').remove(); jQuery.toast({ text: "!Selected Title Deleted Successfully", heading: 'success', icon: 'success', showHideTransition: 'fade', allowToastClose: true, hideAfter: 4000, stack: 15, position: { left : 'auto', right : 100, top : 153, bottom : 'auto' }, textAlign: 'left', loader: true, loaderBg: '#9EC600', }); /* setTimeout(function() { location.reload(); }, 2000); */ } else { jQuery.toast({ text: "Please select at least one title to delete.", heading: 'Failed', icon: 'error', showHideTransition: 'fade', allowToastClose: true, hideAfter: 3000, stack: 5, position: 'top-right', }); } }, complete: function() { jQuery('#delete-selected').find('.loading-spinner').remove(); }, error: function(xhr, status, error) { jQuery.toast({ text: 'An error occurred: ' + error, heading: 'NOTE', icon: 'error', showHideTransition: 'fade', allowToastClose: true, hideAfter: 3000, stack: 5, position: 'top-right', }); } }); }); }); [/code]