wtyczki – wordpress admin-ajax złe żądanie 400
mam tutaj wybrane opcje, które są generowane z tabeli wordpress, powinny zawierać wszystkich klientów, których mam, próbuję dotrzeć do tego, kiedy wybieram jednego z klientów z pola wyboru, powinna być tabela z odpowiednich leadów, które ma ten klient.
HTML
<label for="client">Select a client:</label>
<select id="client" name="client">
<option value="">Select a client</option>
<?php
global $wpdb;
$table_name = $wpdb->prefix . 'clients';
$results = $wpdb->get_results("SELECT * FROM $table_name");
foreach ($results as $result) {
echo '<option value="' . $result->id . '">' . $result->contact_name . ' - ' . $result->company_name . '</option>';
}
$clients = new Clients();
?>
</select>
<div id="leads-table"></div>
PHP
add_action('wp_ajax_get_leads', 'get_leads');
add_action('wp_ajax_nopriv_get_leads', 'get_leads');
function get_leads() {
global $wpdb;
$table_name = $wpdb->prefix . 'leads';
$client_id = $_POST['client_id'];
error_log('Client ID: ' . $client_id);
var_dump($client_id);
$results = $wpdb->get_results($wpdb->prepare("SELECT * FROM $table_name WHERE client_id = %d", $client_id));
if ($results) {
foreach ($results as $result) {
echo '<tr>';
echo '<td>' . $result->id . '</td>';
echo '<td>' . $result->owner_first_name . '</td>';
echo '<td>' . $result->owner_last_name . '</td>';
// add other fields here
echo '</tr>';
}
} else {
echo '<tr><td colspan="10">No leads found for this client.</td></tr>';
}
wp_die();
}
JavaScript
jQuery(document).ready(function($) {
$('#client').on('change', function() {
var client_id = $(this).val();
console.log(client_id);
if (client_id) {
$.ajax({
url: ajax_object.ajax_url,
type: 'POST',
data: {
action: 'get_leads',
client_id: client_id
},
success: function(data) {
var leads = JSON.parse(data);
var html="";
for (var i = 0; i < leads.length; i++) {
html += '<tr>';
html += '<td>' + leads[i].owner_first_name + '</td>';
html += '<td>' + leads[i].owner_last_name + '</td>';
html += '<td>' + leads[i].email + '</td>';
html += '<td>' + leads[i].zip + '</td>';
html += '</tr>';
}
$('#leads-table tbody').html(html);
},
error: function(xhr, textStatus, errorThrown) {
console.log('Error: ' + errorThrown);
}
});
} else {
$('#leads-table tbody').html('');
}
});
});
a oto jak zakodowałem skrypty
class Enqueue
{
public function register() {
add_action( 'admin_enqueue_scripts', array( $this, 'enqueue' ) );
}
function enqueue() {
// enqueue all our scripts
wp_enqueue_style( 'mypluginstyle', ROIPLUGIN_URL . 'assets/mystyle.css' );
wp_enqueue_script( 'mypluginscript', ROIPLUGIN_URL . 'assets/myscript.js' , array('jquery'), true);
wp_localize_script('mypluginscript', 'ajax_object', array('ajax_url' => admin_url('admin-ajax.php')));
}
}
ale zawsze otrzymuję POST https:xxxx.com/wp-admin/admin-ajax.php 400 Błąd