wordpress ajax bad request 400

Does you have localized your script correctly?
Please try the following method to enqueue your custom script and localize it.

add_action( 'wp_enqueue_scripts', 'my_custom_scripts', 10 );
function my_custom_scripts() {
    wp_enqueue_script('custom-script',plugin_dir_url(__FILE__) . '/custom_script.js',
        array( 'jquery' )
    );
    wp_localize_script( 'custom-script', 'ajaxscript',array( 'ajaxurl' => admin_url('admin-ajax.php' )));
}

Then you can call ajax url in custom_script.js as this way.

        $.ajax({
            url: ajaxscript.ajaxurl,
            method: 'POST',
            ....
        });