在php中判断一个请求是ajax请求还是普通请求的方法
前端之家收集整理的这篇文章主要介绍了
在php中判断一个请求是ajax请求还是普通请求的方法,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
/path/to/pkPHP.com/script.PHP?ajax
在PHP脚本中使用如下方法判断:
<div class="codetitle"><a style="CURSOR: pointer" data="50201" class="copybut" id="copybut50201" onclick="doCopy('code50201')"> 代码如下:
<div class="codebody" id="code
50201">
if(isset($_GET['ajax'])) {
...这是一个ajax请求,然后...
}
else {
...这不是一个ajax请求,然后...
}
通过传递_GET参数的
方法简单实现了网页请求的判断。但是如果需要这样的
功能,这个
方法可能就有弊端,
功能需求如下:
1.通过ajax请求的网页与普通请求的网页
内容是不相同的
2.通过ajax请求的网页是为了方便
用户操作,两种
方法请求打开的网页必须的
内容是相同的,只是ajax请求到的网页
内容比较简化和使用,
去除了网页的大框架模板。
3.这么做的目的是:
用户在网页操作时通过ajax实现,而
搜索引擎访问网页时(相当于普通打开网页),得到的
内容是一个完整的网页(包含了网页的大框架模板)。
要完成上面的这个
功能,就不能使用前面介绍的通过GET参数传递来判断了,如果使用GET传递来判断的话,
用户ajax请求和普通网页请求都会是一样的
内容,因为你不可能为一个
链接设置一个带ajax判断参数和不带的URL。那么如何才能实现这个
功能呢?必须通过服务器端
PHP判断
解决这个问题。也就是今天要说的
PHP如何判断ajax请求。这个问题要
解决有一个先决条件,那就是你使用的ajax框架必须是jquery。在jquery框架中,对于通过它的$.ajax,$.get,or $.post
方法请求网页
内容时,它会向服务器传递一个HTTP_X_REQUESTED_WITH的参数,你可以利用如下
方法判断某个请求是ajax请求还是普通请求:
if(isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest')
{
..这是一个ajax请求,然后...
}
else {
..这不是一个ajax请求,然后...
}
if(isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest')if(isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH
{
...这是一个ajax请求,然后...
}
else {
...这不是一个ajax请求,然后...
}
利用这个来进行判断操作,可以使网页端的URL保持一致,但是能够对两种不同的请求却能够得到不同
内容的网页。即实现了
用户操作优化,又不影响
搜索引擎收录,我觉得是一个很棒的
解决方案!
这里有一个另外需要注意的问题,就是如果你的jquery请求是通过iframe打开网页的,那么HTTP_X_REQUESTED_WITH参数不会被传递,也就是说你没有办法判断请求的类型。
1.
这个问题要
解决有一个先决条件,那就是你使用的ajax框架必须是jquery。在jquery框架中,对于通过它的$.ajax,or $.post
方法请求网页
内容时,它会向服务器传递一个HTTP_X_REQUESTED_WITH的参数,你可以利用如下
方法判断某个请求是ajax请求还是普通请求:
if(isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest')
{ 2.
这里有一个另外需要注意的问题,就是如果你的jquery请求是通过iframe打开网页的,那么HTTP_X_REQUESTED_WITH参数不会被传递,也就是说你没有办法判断请求的类型。
原文链接:https://www.f2er.com/ajax/27820.html