Wordpress,管理菜单,Ajax 400错误请求



我试图删除数据库行使用按钮,(这是在我的插件在管理区)但我不能弄清楚为什么我的ajax调用不工作。每次我尝试,我总是收到400个错误的请求。所以我还没有管理它来正确地调用函数

这是我的按钮:

<button  class="deletebutton" <?php echo 'value="' . $data->id . '"' ?> class="delete"> delete</button>

And i use:

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>

您输入了错误的操作名称。点击这里查看更多信息

改变这一行

`add_action('wp_ajax_worktmp_delete_absence', 'delete_data');`

`add_action('wp_ajax_delete_data', 'delete_data');`

正确的做法是

创建一个单独的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');

如果是普通用户,请同时添加以下内容

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));
}

可以,试一次

最新更新