9

无论如何检查传入请求是否为 AJAX JSON 类型?

我试过

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

但它没有用。

有什么想法吗?

4

6 回答 6

12

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

您可以在脚本的开头有一个函数,该函数尝试将数据导入为 JSON 或 simplexml。如果它发现一个错误,你知道它是另一个......

再想一想,让它测试为 JSON,simplexml 会因为很多原因引发错误。

 $json_request = (json_decode($request) != NULL) ? true : false;
于 2009-09-04T06:44:49.763 回答
11

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

if(strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest')
{
   echo "Ajax request";
}
于 2009-09-04T06:41:01.333 回答
4

您可以检查接受参数,如果是 text/javascript,您的谈话 json,如果是 text/xml,猜猜是什么:P

$_SERVER['HTTP_ACCEPT']

于 2009-09-04T06:35:39.517 回答
4

您可以检查X-Requested-With标题,一些库,如jQuery将其设置为"XMLHttpRequest".

$isAjaxRequest = $_SERVER['X_REQUESTED_WITH'] == 'XMLHttpRequest';
于 2009-09-04T06:40:34.190 回答
0

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

于 2009-09-04T09:26:19.657 回答
-2

试试 json_decode()

于 2009-09-04T06:38:35.487 回答