代码之家  ›  专栏  ›  技术社区  ›  Graviton

PHP检查传入请求是否为JSON类型

  •  8
  • Graviton  · 技术社区  · 15 年前

    是否仍要检查传入请求是否为Ajax JSON类型?

    我试过

    if(($_SERVER['REQUEST_METHOD']=='JSON'))
    {
    }
    

    但它不起作用。

    有什么想法吗?

    6 回复  |  直到 15 年前
        1
  •  12
  •   Anthony    15 年前

    你到底在哪里接受你不知道的请求?

    您可以在脚本的开头有一个函数,该函数尝试将数据作为JSON或SimpleXML导入。如果它出错了,你知道是另一个…

    第二种想法是,让它测试它是否为JSON,simpleXML将抛出一个错误,原因有很多。

     $json_request = (json_decode($request) != NULL) ? true : false;
    
        2
  •  8
  •   karim79    15 年前

    您需要从客户端设置一个头部。jquery和其他库设置 x-requested-with 标题:

    if(strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest')
    {
       echo "Ajax request";
    }
    
        3
  •  4
  •   Aun    15 年前

    您可以检查accept参数,如果它是文本/javascript,您正在谈论的JSON,如果它是文本/xml,猜猜看:p

    $服务器['http_accept']

        4
  •  4
  •   Christian C. Salvadó    15 年前

    你可以查一下 X-Requested-With 标题,一些库,比如 jQuery 设置为 "XMLHttpRequest" .

    $isAjaxRequest = $_SERVER['X_REQUESTED_WITH'] == 'XMLHttpRequest';
    
        5
  •  0
  •   Deniss Kozlovs    15 年前

    尝试json_decode()。

        6
  •  0
  •   AriehGlazer    15 年前

    您总是可以设置一个额外的头来指定它,或者使用一个任意变量来指示JSON请求。