如何在CodeIgniter中检查请求是否通过AJAX进行?

jam*_*rie 31 php ajax codeigniter

如何检查请求是否为AJAX?我正在使用CodeIgniter.我有一个链接,当它单击时,它将打开弹出对话框窗口,这是通过ajax请求控制器名称完成的login_window().

//Here is the controller name:
function login_window(){
    // request via ajax
    $this->load->view("login_window");
}
Run Code Online (Sandbox Code Playgroud)

jQuery的

//here is the jquery code:
//I am using a jquery plugin FACEBOX

$('a[rel*=dialog]').facebox();

<a href="http://localhost/codeigniter/login_window" rel="dialog">Login</a>
Run Code Online (Sandbox Code Playgroud)

我想检查它是否是一个AJAX请求,如果没有,我会将它们重定向到主页.所以他们无法访问仅适用于ajax请求的页面.

ale*_*lex 79

如果您使用的是发送X-Requested-With标题的库,那么您可以...

if (strtolower(filter_input(INPUT_SERVER, 'HTTP_X_REQUESTED_WITH')) === 'xmlhttprequest') {
   // I'm AJAX!
}
Run Code Online (Sandbox Code Playgroud)

  • 我明白了... Wierdos ;-) (36认同)
  • @prodigitalson只是风格,我使用Kohana框架很多,[鼓励它](http://kohanaframework.org/guide/about.conventions#highlighter_594231)(另外我认为它也更好看). (4认同)
  • 我也喜欢使用AND.@alex,非常感谢:) (4认同)
  • @alex你知道它们不一样,我知道它们不一样,但是如果其他人发现你的代码并且不知道它们的区别,那么就会认为它是同样的事情.请不要再这样做了,特别是如果你知道这是错的. (3认同)
  • +1,但为什么使用`AND`代替`&&`? (2认同)
  • Kohana框架违反PSR标准(他们使用snake_case,Allman风格等等),不要**在其他地方应用任何约定! (2认同)

Dan*_* F. 17

从Codeigniter 2.0开始,它更适合使用 $this->input->is_ajax_request()

  • Ick I _hate_在方法名称中强调.但是在你的答案中坚持使用CodeIgniter的+1. (5认同)