How to find out if a request is an ajax request?

后端 未结 3 932
我在风中等你
我在风中等你 2021-02-11 02:41

I try to find out if a request to a PHP file is sent by ajax or not.

I googled it and read a whole a bunch of articles that suggest following method:

3条回答
  •  谎友^
    谎友^ (楼主)
    2021-02-11 03:15

    Not all browsers will send that response I usually use

    if (isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) === 'xmlhttprequest') {//Do stuff }
    

    and for ajax

    request = $.ajax({
        url: SomePage.php,
        type: "POST",
        data: {key: value}
    });
    request.done(function(returnedData) {
        //do done stuff
    });
    request.fail(function(jqXHR, textStatus) {
        //do fail stuff
    });
    

    Note:

    $HTTP_SERVER_VARS contains the same initial information, but is not a superglobal. 
    (Note that $HTTP_SERVER_VARS and $_SERVER are different variables and that 
    PHP handles them as such). Also note that long arrays were removed since PHP 5.4.0 so 
    $HTTP_SERVER_VARS doesn't exist anymore.
    

    So var_dump($HTTP_SERVER_VARS); to see if its contained in there, also note that the $_SERVER is filled in by the webserver

提交回复
热议问题