Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在php(或codeigniter)中区分ajax调用和浏览器请求?_Php_Jquery_Ajax_Codeigniter - Fatal编程技术网

如何在php(或codeigniter)中区分ajax调用和浏览器请求?

如何在php(或codeigniter)中区分ajax调用和浏览器请求?,php,jquery,ajax,codeigniter,Php,Jquery,Ajax,Codeigniter,有没有一种方法可以区分php中的ajax调用和普通浏览器请求(具体来说是codeigniter) 这是我的jquery ajax调用: $(document).ready(function() { $('#container').load('http://localhost/index.php/customer/'); }); 这是codeigniter中客户控制器的索引方法: public function index() { //if (call == 'ajax req

有没有一种方法可以区分php中的ajax调用和普通浏览器请求(具体来说是codeigniter)

这是我的jquery ajax调用:

$(document).ready(function() {
    $('#container').load('http://localhost/index.php/customer/'); 
});
这是codeigniter中客户控制器的索引方法:

public function index() {
    //if (call == 'ajax request') 
    //  do this if it's an ajax request;
    //else
    //  do that if user directly type the link in the address bar;
    $this->load->view('customer/listview');
}
任何帮助都将不胜感激。谢谢

function getIsAjaxRequest()
{
    return isset($_SERVER['HTTP_X_REQUESTED_WITH']) && $_SERVER['HTTP_X_REQUESTED_WITH']==='XMLHttpRequest';
}
在某处定义此函数,然后按如下方式使用:

if (getIsAjaxRequest())
// do this
else
// do that
但在CodeIgniter实现中可能已经有了这样的东西,只需使用

if (strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {}

你应该做你需要的。虽然它很明显可以像其他HTTP头一样伪造,所以不要依赖它来做任何重要的事情。

这是Codeigniter实现的这一功能

if($this->input->isAjax()) {

        }  
编码点火器方式

$this->input->is_ajax_request()

如果服务器在反向代理后面,我将通过一个javascript函数执行所有AJAX调用,在该函数中我添加了一个POST变量:isajax。然后我使用类似$this->UI->IsAJAX()的东西检查它,它查找在设置控制器时初始化的变量

$this->_isAJAX = (empty($_POST['isajax']) ? true : false.

哇,真管用。我想我没有彻底阅读输入类。非常感谢。如果您不使用框架,我的答案很有用,我不建议您编写自己的函数来进行AJAX调用和设置POST变量(当然不是应用程序逻辑)。这是codeigniter中的$this->input->is_AJAX_request()。但要了解该方法的实际工作原理需要+1经验。谢谢