php - 有没有办法(在 PHP 中)检测脚本是否被 jQuery 加载调用?

标签 php jquery ajax load

我想要一个可以检测是否被jquery调用的脚本

如果没有,它会显示页面+布局,如果没有,它只会显示内容(但这无关紧要)

但是,是的,一种检测它是由 jquery load - ajax - 还是直接请求调用的方法。

干杯!

最佳答案

您可能想查看您的服务器正在接收的 HTTP header 。

例如,让我们假设我有这个页面:

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.js"></script>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.2/jquery-ui.js"></script>
</head>
<body>
    <div id="test"></div>
    <script type="text/javascript">
        $('#test').load('temp.php');
    </script>
</body>
</html>

temp.php 脚本仅包含以下内容:

<?php
var_dump($_SERVER);

die;


load执行后,“测试”<div>将包含 $_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 所使用的解决方案 detect Ajax requests .

关于php - 有没有办法(在 PHP 中)检测脚本是否被 jQuery 加载调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1482086/

相关文章:

java - 用 Java 编写脚本(使用 PHP)?

php - C :\wamp\www\filepath\cake\libs\model\datasources\dbo\dbo_mysql. php 超出最大执行时间 60 秒

jquery - 使跨域 iframe 与拖动事件交互

javascript - 根据窗口中的元素位置,向下滚动时淡入,向上滚动时淡出

javascript - jQuery 现在显示短语变量值

php - 使用 PHP 获取特殊的 utf8 符号到 SQL/mySql 数据库

jquery - 在圆环饼图中添加外部圆形条

javascript - 带进度条AJAX的多文件上传

javascript - 使用 Ajax POST 到 REST 服务失败

javascript - 如何使 vAxis 和 hAxis 编号为整数