PHP检查Incoming Request是否为JSON类型

时间:2009-09-04 06:33:54

标签: php httprequest

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

我试过

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

但它不起作用。

有什么想法吗?

6 个答案:

答案 0 :(得分:12)

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

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

第二个想法,让它测试它是JSON,simplexml会因为很多原因而抛出错误。

 $json_request = (json_decode($request) != NULL) ? true : false;

答案 1 :(得分:8)

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

if(strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest')
{
   echo "Ajax request";
}

答案 2 :(得分:4)

你可以检查一下accept param,如果它是text / javascript你说话的json,如果是text / xml猜测是什么:P

$ _ SERVER [ 'HTTP_ACCEPT']

答案 3 :(得分:4)

您可以查看X-Requested-With标题,某些图书馆,例如jQuery将其设置为"XMLHttpRequest"

$isAjaxRequest = $_SERVER['X_REQUESTED_WITH'] == 'XMLHttpRequest';

答案 4 :(得分:0)

尝试json_decode()

答案 5 :(得分:0)

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