是否有一种方法(在PHP中)检测脚本是否被jQuery加载调用?
我想要一个可以检测jquery是否调用的脚本
如果没有,它会显示页面+布局,如果没有,它只是内容(但这是无关紧要的)
但是,是的,一种检测它是否被jquery load-ajax调用或直接请求的方法。
干杯!
你能不用负载发送GET参数?
即:
jquery=1 //(for load) jquery=2 //(for the 'low-level' ajax call)
正常脚本加载的任何其他值
然后让PHP脚本处理确定下一步该做什么。 通过读取$_GET['jquery']
您可能想要查看服务器正在接收的HTTP标头。
例如,让我们考虑一下这个页面:
而temp.php脚本只包含这个:
执行load
,“test”
将包含$_SERVER
的转储; 它包括这个,除其他外:
'HTTP_X_REQUESTED_WITH' => string 'XMLHttpRequest' (length=14)
XMLHttpRequest
是用于发出Ajax请求的对象。
这意味着您应该能够检测请求是否是通过AJax查询进行的,具体如下:
if (isset($_SERVER['HTTP_X_REQUESTED_WITH']) && $_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest') { echo "Ajax"; } else { echo "Not Ajax"; }
有了这个,您可以检测您的页面是“正常”调用,还是通过Ajax请求,并决定是否必须包含布局。
顺便说一句:这正是Zend Framework用来检测Ajax请求的解决方案。
如果我没记错的话,jQuery的AJAX函数会发送一个X-Requested-With
标头(值为XMLHttpRequest
)。
如果你使用的是Zend Framework,你可以使用
// in one of your controllers if ($this->getRequest()->isXmlHttpRequest()) { // ... }
http://framework.zend.com/manual/en/zend.controller.request.html