php中如何判断一个网页请求是ajax请求还是普通请求

时间:2023-10-13 14:42:30 

如何在php中判断一个网页请求是ajax请求还是普通请求?你可以通过传递参数的方法来实现,例如使用如下网址请求:
/path/to/pkphp.com/script.php?ajax
在php脚本中使用如下方法判断:


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请求,然后...
}


利用这个来进行判断操作,可以使网页端的URL保持一致,但是能够对两种不同的请求却能够得到不同内容的网页。即实现了用户操作优化,又不影响搜索引擎收录,我觉得是一个很棒的解决方案!


这里有一个另外需要注意的问题,就是如果你的jquery请求是通过iframe打开网页的,那么HTTP_X_REQUESTED_WITH参数不会被传递,也就是说你没有办法判断请求的类型。

标签:php,判断ajax,普通请求
0
投稿

猜你喜欢

  • 利用SQL Server复制技术实现数据同步更新

    2009-10-23 14:11:00
  • Bootstrap4如何定制自己的颜色和风格

    2024-05-13 09:19:09
  • python操作字典类型的常用方法(推荐)

    2023-01-17 17:05:33
  • 数据库报错:Unknown column 'xxx' in 'where clause'问题的解决过程

    2024-01-22 23:23:04
  • 小白教你PyCharm从下载到安装再到科学使用PyCharm2020最新激活码

    2021-03-25 05:57:35
  • python 包实现 time 时间管理操作

    2023-03-13 21:37:52
  • python批量读取txt文件为DataFrame的方法

    2021-09-29 12:04:21
  • python基于phantomjs实现导入图片

    2023-07-18 23:39:42
  • Oracle SID存在解決方法

    2009-06-19 17:34:00
  • Python之Web框架Django项目搭建全过程

    2022-03-21 03:06:08
  • Python2与Python3的区别点整理

    2022-02-23 07:44:46
  • python抓取搜狗微信公众号文章

    2021-10-25 17:56:08
  • DreamweaverMX 2004打造细线表格

    2008-10-01 09:39:00
  • pandas 按照特定顺序输出的实现代码

    2023-02-04 19:35:17
  • Django drf使用Django自带的用户系统的注册功能

    2023-07-15 00:21:38
  • vue实现验证码倒计时按钮

    2024-04-09 10:49:05
  • 新手如何快速入门Python(菜鸟必看篇)

    2021-01-27 01:24:35
  • python中HTMLParser模块知识点总结

    2023-10-14 03:07:44
  • Python网络编程之使用email、smtplib、poplib、imaplib模块收发邮件

    2023-06-30 08:45:42
  • python生成器的使用方法

    2021-12-03 22:40:49
  • asp之家 网络编程 m.aspxhome.com