Tag Archives: ajax

Detectar petición ajax en PHP

Muchos programadores acostumbran a usar el mismo fichero PHP para peticiones estándar y peticiones ajax. El uso de un único script facilita el mantenimiento del código simplificando cualquier modificación que realicemos en un futuro además de aportar ventajas en el cacheo.

Normalmente se añade un parámetro a GET o POST para identificar el tipo de llamada, pero si hacemos uso de algún framework javascript podemos ahorrárnoslo y detectar la llamada así:


 if( !empty($_SERVER['HTTP_X_REQUESTED_WITH'])
     && strtolower($_SERVER['HTTP_X_REQUESTED_WITH'])
     == 'xmlhttprequest' ) {

      /* petición ajax */

 } else {

      /* no es una petición ajax.... */
 }

La variable HTTP_X_REQUESTED_WITH es totalmente dependiente de la librería javascript utilizada pero prácticamente todas (Prototype, jQuery, Mootools,YUI…) la envían.

Si por el contrario realizais las llamadas ajax “a mano” podéis añadir la cabecera necesaria de la siguiente manera:


xmlHttpRequest.setRequestHeader('X-Requested-With', 'XMLHttpRequest');

cross-domain ajax request

El standard XMLHttpRequest() definido por la W3C limita las llamadas javascript a nuestro propio dominio. Esto se definió así en su día por temas de seguridad y porque no parecía necesario realizar llamadas a webs externas.

Con los años, la evolución de las webs, popularización de apis publicas etc. Ha quedado demostrado que el segundo punto no era correcto. Visto esto la W3C se volvió a poner manos a la obra, modifico ligeramente el standard y a día de hoy ya podemos realizar llamadas ajax cross-domain con los últimos navegadores sin necesidad de alternativas rebuscadas.

Read more