防止在ajax请求上执行整个php

时间:2009-08-20 22:34:51

标签: php javascript jquery ajax

我有一个ajax脚本(jquery),它要求index.php输出生成的变量。此index.php也是生成整个页面并最初填充数据的文件。当ajax请求此文件时,我怎么才能让getNewData()函数。现在它复制整个页面并输出它,所以有两件事。

4 个答案:

答案 0 :(得分:2)

    function isAjax() {
            return env('HTTP_X_REQUESTED_WITH') === "XMLHttpRequest";
    }

试试这个......来自CakePHP

答案 1 :(得分:2)

Dooltaz答案的原生PHP实现如下:

function isAjax() {
    return $_SERVER['HTTP_X_REQUESTED_WITH'] === "XMLHttpRequest";
}

这当然取决于客户端XHR请求实际发送的X_Requested_With标头。据我所知,所有主要的Javascript库都包含此标题,但是如果您正在使用XHR实现,则需要添加它。

答案 2 :(得分:1)

理想情况下,您可能不应该在index.php文件中包含所有内容。但是,您可以使用AJAX请求合理地传递GET变量,并在PHP文件中检查它:

if ('requestType' == 'ajax')
{
    // return json etc
}
else
{
    // print page
}

答案 3 :(得分:1)

如果我是对的,你需要有条件地执行这个方法。因此,使用额外的参数发送异步请求

$得到('/ index.php的EXEC = 1?);

在index.php中

if($_GET['exec']==1){
     //execute
}
else {
  //render page - output html, etc
}