Detect an Ajax Request with PHP

By Avinash

January 15, 2013Tips & Tricks5 Comments

In this quick tip article we will see how we can detect AJAX request using PHP.

This trick will be very useful and handy when you want the same request to behave differently for AJAX request and normal request.

Generally we used to echo the content or some sort of flag when we deal with AJAX and in normal request execution continue to serve HTML.

So Let’s see how we can detect weather request is made using AJAX or it’s a normal request.

$ajax = false; if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') { $ajax = true; }
$ajax = false;

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

PHP’s $_SERVER['HTTP_X_REQUESTED_WITH'] variable is one strong sign that an AJAX request has been made from browser.

Hope you find this helpful for your work.

Share This Article

  • Anna Harris

    Thanks for sharing code it helps me a lot.

  • Toms

    or as the one-line-code:

    $ajax = isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest');
    $ajax = isset($_SERVER['HTTP_X_REQUESTED_WITH']) &&  strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest');
  • MM

    Small, Easy and Effective code snippet… thanks for sharing..

  • danik

    Why should we lowercase the header value ? Why not just

    $_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest'
    $_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest'
  • Dennis Gruetter

    I was very sold on this solution but over the weekend I just found out that ie8 does not send this header. This turned out to be a deal breaker for me. Otherwise great solution.