Existe-t-il un moyen de surveiller toutes les demandes Ajax effectuées à l'aide de JQuery sur WooCommerce?

J'essaie de détecter quel événement Ajax sur la page du panier WooCommerce provoque parfois une boucle infinie sur mon site Web WordPress.

1
Joe 10 févr. 2021 à 10:12

2 réponses

Meilleure réponse

Vous pouvez utiliser:

  • ajaxSend() qui attachent une fonction à exécuter avant l'envoi d'une requête Ajax,
  • ajaxComplete() qui enregistrent un gestionnaire à appeler lorsque les requêtes Ajax sont terminées.

Les deux donnent des détails relatifs à l'événement Ajax qui est déclenché sur un objet XHR lisible dans la console Javascript de votre navigateur.

Voici un exemple de code, qui affiche les détails de la demande déclenchée par Ajax:

add_action( 'wp_footer', 'monitor_jquery_ajax_requests' );
function monitor_jquery_ajax_requests() {
    ?>
    <script>
    jQuery(document).ajaxSend( function( event, xhr, options ) {
        console.log('------- ' + event.type + ' -------');
        console.log(xhr);
        console.log('------------------------');
    }).ajaxComplete( function( event, xhr, options ) {
        console.log('----- ' + event.type + ' -----');
        console.log(xhr);
        console.log('----------------------------');
    });
    </script>
    <?php
}

Le code va dans le fichier functions.php du thème enfant actif (ou thème actif). Testé et fonctionne.

Après le chargement de la page de paiement, par exemple, vous obtiendrez quelque chose comme:

enter image description here

enter image description here

En relation: Surveiller toutes les requêtes AJAX effectuées par JQuery?

1
LoicTheAztec 10 févr. 2021 à 08:37

Vous pouvez essayer l'événement ajaxstart fourni par jquery lui-même. Jquery déclenche cet événement chaque fois qu'il envoie une requête ajax.

$( document ).ajaxStart(function() {
  $( "#loading" ).show();
});

#Espérons que cela vous aidera, merci.

2
Sulabh Agarwal 10 févr. 2021 à 07:17