Olá ….
Vi pelo twitter um post do @ErickBelfy que tinha um link para o site http://www.electrictoolbox.com/how-to-tell-ajax-request-php/ e resolvi postar em meu blog essa dica.
Geralmente quando eu envio uma requisição ajax para o php eu passo via GET um valor informando que o processamento é assincrono então eu faço algo do tipo
pagina.php?ajax=1
[php]<?php if(isset($_GET[‘ajax’]) //é requisição ajax else // requisição comum. ?>[/php]
O interessante é que usando a variavel $_SERVER eu consigo identificar se a requisição é assincrona ou não:
[php]<?php if(isset($_SERVER[‘HTTP_X_REQUESTED_WITH’]) && strtolower($_SERVER[‘HTTP_X_REQUESTED_WITH’]) == ‘xmlhttprequest’) //é uma requisição ajax else // é uma requisição comum ?>[/php]
e para melhorar o código fica mais prático criar uma constante que contenha esse valor
[php]<?php define(‘IS_AJAX’, isset($_SERVER[‘HTTP_X_REQUESTED_WITH’]) && strtolower($_SERVER[‘HTTP_X_REQUESTED_WITH’]) == ‘xmlhttprequest’); //então if(IS_AJAX) //é uma requisição ajax else //é uma requisição comum ?>[/php]
#ficaADica
Obrigado por visitar o blog.
[ratings]
15 Comments
Diego Henrique · 2019-01-22 at 17:32
Vale lembrar que por padrão o javascript não envia este header. Diversos frameworks como jQuery, Dojo e outros, já enviam este header por padrão, ou seja, se você não usa algum framework JS você precisa setar este header na mão quando abrir um XMLHttpRequest.
🙂
Diego Henrique · 2010-01-21 at 09:51
Vale lembrar que por padrão o javascript não envia este header. Diversos frameworks como jQuery, Dojo e outros, já enviam este header por padrão, ou seja, se você não usa algum framework JS você precisa setar este header na mão quando abrir um XMLHttpRequest.
🙂
Danniel · 2012-01-08 at 07:59
Assim:
XMLHttpRequest.setRequestHeader(“x_requested_with”, “xmlhttprequest”);
Bruno Pulis · 2019-01-22 at 17:32
Parabéns pelo post Broga
Bruno Pulis · 2010-01-25 at 00:20
Parabéns pelo post Broga
Show · 2019-01-22 at 17:32
de bola
Show · 2010-11-04 at 16:14
de bola
Giovanni · 2019-01-22 at 17:32
Valeu!!!
Giovanni · 2010-12-10 at 10:25
Valeu!!!
William Rufino · 2019-01-22 at 17:32
Boa dica! 🙂
alguns frameworks já trazem essa checagem como o codeigniter, é mto util fazer essa diferença!
@emersonbroga · 2019-01-22 at 17:37
Sim sim … os frameworks já vem com essa checagem!
William Rufino · 2011-08-11 at 19:43
Boa dica! 🙂
alguns frameworks já trazem essa checagem como o codeigniter, é mto util fazer essa diferença!
@emersonbroga · 2011-08-12 at 10:57
Sim sim … os frameworks já vem com essa checagem!
Danilo Morães · 2011-10-03 at 16:08
Emboras seja possível fazer comparações entre strings com o operador ==, é aconselhado utilizar a função strcmp. Nesse caso funciona perfeitamente, mas dependendo as operações feitas antes da comparação, pode dar caca.
if(isset($_SERVER[‘HTTP_X_REQUESTED_WITH’]) && strcasecmp($_SERVER[‘HTTP_X_REQUESTED_WITH’]), ‘xmlhttprequest’) === 0)
#ficadica
Diego Armando · 2012-04-18 at 11:51
Grande dica