我正在嘗試使用按鈕洗掉資料庫行(這是在我的管理區域插件中),但我無法弄清楚為什么我的 ajax 呼叫不起作用。每次我嘗試時,我都會收到:400 個錯誤的請求。所以我還沒有管理它來正確呼叫該函式
這是我的按鈕:
<button class="deletebutton" <?php echo 'value="' . $data->id . '"' ?> class="delete"> delete</button>
我使用:
add_action('wp_ajax_delete_data', 'delete_data');
我的功能:(我知道它有效我以前用過很多次
'function delete_data($element_id){
global $wpdb;
$tablename = $wpdb->prefix . 'my_table';
$wpdb->delete($tablename, array('id' => $element_id));
}'
和 Jquery/AJAX <-這是我認為的問題
<script>
var ajaxurl = '<?php echo admin_url('admin-ajax.php'); ?>';
jQuery(document).ready(function() {
jQuery(".deletebutton").click(function(){
var element_id = this.value;
jQuery.ajax({
url: ajaxurl,
type: 'POST',
action: 'delete_data',
data: element_id
dataType: 'data',
});
});
});
</script>
uj5u.com熱心網友回復:
您給出了錯誤的操作名稱。在這里查看更多資訊
改變這一行
`add_action('wp_ajax_worktmp_delete_absence', 'delete_data');`
有了這個
`add_action('wp_ajax_delete_data', 'delete_data');`
uj5u.com熱心網友回復:
所以這樣做的正確方法是
創建一個單獨的 js 檔案,或者您可以在現有的 js 檔案上使用它,如下所示在您將腳本排隊時:
wp_register_script( $this->plugin_name, plugin_dir_url( __FILE__ ) . '{your_js_file_location}', array( 'jquery' ), $this->version, false );
wp_localize_script( $this->plugin_name, 'test_ajax_object', array( 'ajaxurl' => admin_url( 'admin-ajax.php' ) ) );
wp_enqueue_script($this->plugin_name);
然后
add_action('wp_ajax_delete_data', 'delete_data');
如果是普通用戶 hten 也添加 flowwing
add_action('wp_ajax_nopriv_delete_data', 'delete_data');
然后在你的js檔案中
jQuery(document).ready(function($) {
$(".deletebutton").click(function(){
var element_id = this.value;
$.ajax({
url: test_ajax_object.ajaxurl,
type : 'post',
data : {
"action" : 'delete_data', "data_id":element_id},
success: function( response ) {
console.log(response);
}
});
});
});
在你的 php 檔案中
function delete_data(){
global $wpdb;
$element_id = $_POST['data_id'];
$tablename = $wpdb->prefix . 'my_table';
$wpdb->delete($tablename, array('id' => $element_id));
}
這可能有效,嘗試一次
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/339781.html
標籤:阿贾克斯 WordPress的 wordpress-插件创建
