Est Ajax dans WordPress

Existe-t-il de toute façon pour détecter si l'opération actuelle du serveur est actuellement une requête AJAX dans WordPress?

Par exemple:

is_ajax()
33
demandé sur Spencer Cameron-Morin 2013-01-16 02:55:29

6 réponses

Si vous utilisez AJAX comme recommandé dans le codex , Vous pouvez tester la constante DOING_AJAX:

if (defined('DOING_AJAX') && DOING_AJAX) { /* it's an AJAX call */ }
73
répondu webaware 2013-01-16 01:07:36

WordPress 4.7 a introduit un moyen facile de vérifier les demandes AJAX, donc j'ai pensé que j'ajouterais à cette question plus ancienne.

wp_doing_ajax()

De la référence du développeur :

  • Description: détermine si la demande actuelle est une demande Ajax WordPress.

  • Return: (bool) True s'il s'agit D'une requête Ajax WordPress, false sinon.

C'est essentiellement un wrapper pour DOING_AJAX.

16
répondu Nate Weller 2017-02-27 17:13:20

Pour voir si la requête courante est un AJAX demande envoyée à partir d'une bibliothèque js ( comme jQuery ), vous pouvez essayer quelque chose comme ceci:

if( ! empty( $_SERVER[ 'HTTP_X_REQUESTED_WITH' ] ) &&
      strtolower( $_SERVER[ 'HTTP_X_REQUESTED_WITH' ]) == 'xmlhttprequest' ) {
    //This is an ajax request.
}
13
répondu Spencer Cameron-Morin 2013-01-15 23:04:30

Je ne suis pas sûr si WordPress a une fonction pour cela mais cela peut être fait en créant un simple vous-même.

if (!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest')
{
    // Is AJAX request
    return true; 
}
5
répondu Ian Brindley 2013-12-27 23:35:23
if ( ! function_exists('is_ajax') ) {
    function is_ajax() {
        return defined( 'DOING_AJAX' );
    }
}
4
répondu adamj 2014-10-25 08:14:23

Je sais que c'est un vieux fil, mais il y a un problème avec la réponse acceptée,

La vérification de la constante doing_ajax définie sera toujours true, si la requête est à l'admin-ajax.fichier php. ( https://core.trac.wordpress.org/browser/tags/4.4.2/src/wp-admin/admin-ajax.php#L16 )

Parfois admin-ajax.les hooks php ne sont pas utilisés pour les requêtes AJAX, juste un point de terminaison simple (Paypal IPN par exemple).

La bonne façon Est ce que Ian et Spencer ont mentionner.

if( ! empty( $_SERVER[ 'HTTP_X_REQUESTED_WITH' ] ) &&
      strtolower( $_SERVER[ 'HTTP_X_REQUESTED_WITH' ]) == 'xmlhttprequest' ) {
    //This is an ajax request.
}

(aurait commenté... mais pas de rep)

4
répondu Ignacio Jose Canó Cabral 2016-02-14 13:53:14