Detect Ajax calling URL

前端 未结 4 697
不知归路
不知归路 2020-12-03 11:52

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 :



        
相关标签:
4条回答
  • 2020-12-03 12:38

    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
    
    0 讨论(0)
  • 2020-12-03 12:40

    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.

    0 讨论(0)
  • 2020-12-03 12:44

    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
    }
    
    0 讨论(0)
  • 2020-12-03 12:55

    $_SERVER['HTTP_REFERER'] might be what you want

    Reference

    • http://php.net/manual/en/reserved.variables.server.php
    0 讨论(0)
提交回复
热议问题