wp_localize_script script plugin formulario error php ajax wordpress

php - script - wordpress ajax url



Es Ajax en WordPress (6)

¿Hay alguna forma de detectar si la operación actual del servidor es actualmente una solicitud AJAX en WordPress?

Por ejemplo:

is_ajax()


No estoy seguro si WordPress tiene una función para esto, pero se puede hacer creando uno simple.

if (!empty($_SERVER[''HTTP_X_REQUESTED_WITH'']) && strtolower($_SERVER[''HTTP_X_REQUESTED_WITH'']) == ''xmlhttprequest'') { // Is AJAX request return true; }


Para ver si la solicitud actual es una solicitud AJAX enviada desde una biblioteca js (como jQuery ), podría intentar algo como esto:

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


Sé que este es un hilo viejo, pero hay un problema con la respuesta aceptada,

La comprobación de la constante DOING_AJAX definida siempre será verdadera, si la solicitud es para el archivo admin-ajax.php. ( https://core.trac.wordpress.org/browser/tags/4.4.2/src/wp-admin/admin-ajax.php#L16 )

A veces, los enlaces de admin-ajax.php no se utilizan para la solicitud de AJAX, solo un punto final simple (IPN de Paypal, por ejemplo).

La forma correcta es lo que Ian y Spencer han mencionado.

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

(Habría comentado ... pero no rep)


Si está utilizando AJAX como se recomienda en el codex , entonces puede probar la constante DOING_AJAX :

if (defined(''DOING_AJAX'') && DOING_AJAX) { /* it''s an AJAX call */ }


WordPress 4.7 introdujo una manera fácil de verificar las solicitudes de AJAX, así que pensé en agregar a esta pregunta anterior.

wp_doing_ajax()

De la Referencia del desarrollador :

  • Descripción: determina si la solicitud actual es una solicitud de WordPress Ajax.

  • Return: (bool) Verdadero si es una solicitud de WordPress Ajax, de lo contrario es falso.

Es esencialmente un contenedor para DOING_AJAX.


if ( ! function_exists(''is_ajax'') ) { function is_ajax() { return defined( ''DOING_AJAX'' ); } }