Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Detect Ajax calling URL

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 :

/*more code above*/
var PHP_URL = "content.php";
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*/

Is it possible for the file at 'content.php' to detect that it has been called from 'default.html', or a different calling document as necessary?

like image 534
Origamiguy Avatar asked Jun 26 '10 16:06

Origamiguy


2 Answers

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
}
like image 174
Alix Axel Avatar answered Sep 19 '22 03:09

Alix Axel


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
like image 35
fabjoa Avatar answered Sep 20 '22 03:09

fabjoa