WordPress

wtyczki – wordpress admin-ajax złe żądanie 400

  • 22 kwietnia, 2023
  • 3 min read
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

Warto przeczytać!  pętla - Grupuj posty w kategorii na podstawie tagów w niestandardowej taksonomii


Źródło