[PHP] Ajax 通信かどうかの判定方法

PHPAjax, jQuery

PHP で Ajax からのリクエストか、 Submit とかできたリクエストなのかを判定する方法。

jQuery とか prototype とかのライブラリを使って Ajax リクエストを送ると、リクエストヘッダに「 X-Requested-With:XMLHttpRequest 」ていうのが入ってくるので、これを使って判断する。

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

    // Ajax からのリクエスト

} else {

    // Ajax ではない

}

ライブラリを使わないで、 JavaScript とかで Ajax 通信するならヘッダに X-Requested-With:XMLHttpRequest を付ける。

var xmlhttp = new XMLHttpRequest();
xmlhttp.open('GET', URL, true);  // true:非同期モード , false :同期モード

// header は open() の後、 send() の前にセットする
xmlhttp.setRequestHeader('X-Requested-With', 'XMLHttpRequest');

xmlhttp.onreadystatechange = function() {
    // readyState == 4 : 通信完了
    if (xmlhttp.readyState == 4 {
      if (xmlhttp.status == 200) {
        console.log('Success');
      } else {
        console.log('Error');
      }
    } else {
      console.log('Sending');
    }
};
xmlhttp.send();

Posted by Agopeanuts