I have an HTML document, which loads content from a PHP file using an AJAX call. The important bit of my code is below:
default.html :
I guess the best would be to set a request header in your AJAX call, such as
st.setRequestHeader('X-Sent-From','default.html')
then in content.php,
$sentFrom=$_SERVER['HTTP_X_SENT_FROM']; // outputs default.html
It is not possible to simply detect that a request came from an AJAX call on the server. You could, however, add a parameter that you send when requesting it via AJAX that indicates it is coming from an ajax call.
For example:
/*more code above*/
var PHP_URL = "content.php?mode=AJAX";
var Content = document.getElementById('Content');
ajaxRequest = new XMLHttpRequest();
ajaxRequest.onreadystatechange =
function() {
if(ajaxRequest.readyState==4) {
if (ajaxRequest.status==200)
Content.innerHTML = ajaxRequest.responseText;
else
Content.innerHTML = "Error:<br/>unable to load page at <b>"+PHP_URL+"</b>";
Content.className = "Content Solid";
}
}
ajaxRequest.open("GET",PHP_URL,true);
ajaxRequest.send();
/*more code below*/
If simply detecting that the call came from default.html is enough (and not distinguishing between an AJAX call or a clicked link), then checking the Referrer header will do the trick, as suggested by @Jamie Wong.
Most well-known Ajax frameworks like jQuery and mooTools add a specific header which you can check with PHP:
if (strcasecmp('XMLHttpRequest', $_SERVER['HTTP_X_REQUESTED_WITH']) === 0)
{
// Ajax Request
}
$_SERVER['HTTP_REFERER']
might be what you want
Reference