';

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

Leave a Reply

Avatar placeholder

Your email address will not be published. Required fields are marked *