web-dev-qa-db-fra.com

Rien reçu après l'exécution AJAX fonction post

Ce que j'essaie de faire est de permettre aux utilisateurs de filtrer les publications en fonction de la sélection des cases à cocher situées dans la barre latérale.

J'ai créé un type de message personnalisé appelé projets et quelques taxonomies telles que les clients et les expertises. J'ai trouvé ce qui correspond exactement à ce que je veux que ma page ressemble à AJAX. Cependant, je pense qu'il manque du code. Quoi qu'il en soit, j'ai réussi à afficher toutes les taxonomies avec des cases à cocher sans aucun problème.

            <!-- Show clients taxonomies in a checkbox -->
            <?php foreach( $myClient as $a ) { ?>
                <div id="cat_id">
                    <input class="client_filter" name="<?php echo $a->term_id; ?>" type="checkbox"><?php echo " ".$a->cat_name; ?>
                </div>

            <?php } ?>

            <!-- show expertises taxonomies in a checkbox -->
            <?php foreach( $expertStyles as $b ) { ?>
                <div>
                    <input class="expertise_filter" name="<?php echo $b->term_id; ?>" type="checkbox"><?php echo " ".$b->cat_name; ?>
                </div>
            <?php } ?>

Dans mon script.js, j'ai le code ci-dessous:

jQuery(document).ready(function($) {

/* This function will be called on click event */   
var optionsChecked = function() {

/* initialize all the variables */
jQuery('.filter-result-form').html("");
    var clients = [];
var expertises = [];
var term_id = jQuery('#cat_id').text();

/* loop and Push any checked checkboxes into empty array */
jQuery(".client_filter input:checked").each(function() {
    var client_id = jQuery(this).attr('name');
    clients.Push(client_id);
});   

jQuery(".expertise_filter input:checked").each(function() {
    var expertise_id = jQuery(this).attr('name');
    expertises.Push(expertise_id);
});     

/* collect all the data */
var myData = {
    'filter':1,
    'term_id': term_id,
    'client': clients,
    'expertise': expertises
}

/* Ajax url */
var url = "/mysite/ajax";

jQuery.post( url, myData, function( myData ){
    jQuery('.filter-result-form').append( myData );
});

}

$( "input[type='checkbox']" ).on("click", optionsChecked);

});

Lorsque je lance ce code, je ne vois rien apparaître dans le formulaire de résultat du filtre. Je dois avouer que je suis encore en train d'apprendre sur jQuery et AJAX.

1
daniel lee

Veuillez lire le didacticiel Wordpress sur l'utilisation de AJAX dans les plugins (vous ajoutez en fait un plugin à votre thème si vous devez utiliser AJAX ). Il y a deux choses que je vois dès le départ qui doivent être corrigées avant de continuer. Notez ce que dit le didacticiel sur la variable globale ajaxurl. Assurez-vous également que vous avez configuré une fonction php pour traiter la demande AJAX et que vous spécifiez cette fonction dans le champ action de vos données. C'est comme si vous téléphoniez sans numéro de téléphone; le système ne sait pas où envoyer la demande de traitement AJAX.

Je travaillerais sur tout ce que le tutoriel suggère, mais je pense que ces deux choses sont les plus importantes en ce moment.

1
scott