我的WordPress插件设置页面中有以下PHP页面:
<input type="button" class="button button-primary" onclick="update(<?php echo $id; ?>)" value="Done">
这是我的JS函数,只需单击按钮即可调用:
function update(id) {
jQuery('.table100 .blockUI').removeClass('invisible');
var data = {
'action': 'update_table',
'id': id
};
var ajaxurl = "<?php echo admin_url( 'admin-ajax.php' ); ?>";
jQuery.post(ajaxurl, data, function () {
}).success(function () {
location.reload();
}).fail(function (data) {
jQuery('.table100 .blockUI').addClass('invisible');
alert('An error occured during the database update!');
});
}
这是在执行js函数时应执行的函数:
add_action( 'wp_ajax_update_table', 'update_table' );
function update_table() {
$id = $_POST['id'];
global $wpdb;
if ( $id > 0 && ! empty( $id ) ) {
$result = $wpdb->update( 'my_table', array( 'xyz' => '1' ), array( 'id' => $id ) );
if ( empty( $result ) ) {
wp_send_json_error( null, 400 );
wp_die();
}
} else {
header( 'HTTP/1.1 500 Internal Server Error' );
header( 'Content-Type: application/json; charset=UTF-8' );
die( json_encode( array(
'message' => 'ERROR. Id missing. Can not update my_table.',
'code' => 1337
) ) );
}
}
所有三个部分都在同一页面上,我试图触发它,但是我总是遇到400 Bad Request问题。我已经在PHP函数中添加了一个调试程序,以查找该函数是否被调用但没有结果。
我的目标: 我的目标是更新ID =提交ID的数据库中的值。