我一直在对 ajax 进行大量研究,但我似乎找不到太多关于使用 codeigniter 创建单独的 ajax 层的信息......我在 codeigniter 上执行教程视频的目录树中看到了 ajax Controller ,只是从来没有得到真正的解释。我假设它是为了促进封装并仅向启用了 javascript 的用户展示等等,只是不确定如何在 Controller 中实现它以便在我自己的项目中使用。
最佳答案
这完全取决于您在做什么。在我看来,最简单的方法不是使用单独的 AJAX Controller 和 url,而是检测 Controller 中的请求并输出与平常不同的内容。 Input class有一个功能:
/**
* Is ajax Request?
*
* Test to see if a request contains the HTTP_X_REQUESTED_WITH header
*
* @return boolean
*/
public function is_ajax_request()
{
return ($this->server('HTTP_X_REQUESTED_WITH') === 'XMLHttpRequest');
}
我更喜欢使用常量:
/**
* Is this an ajax request?
*
* @return bool
*/
define('AJAX', isset($_SERVER['HTTP_X_REQUESTED_WITH']) && $_SERVER['HTTP_X_REQUESTED_WITH'] === 'XMLHttpRequest');
Controller 方法中的示例用法:
$data = $this->some_model->get();
if ($this->input->is_ajax_request())
{
// AJAX request stops here
exit(json_encode($data));
}
$this->load->view('my_view', $data);
这样,您就不会将相同或相似的应用程序逻辑分散到多个不同的 Controller 中,并且您的代码可以更易于维护。例如,您的标准 HTML 表单可以使用 AJAX 发布到相同的位置并具有不同的输出,因此它也有助于制作 progressive enhancement。更容易和清洁。此外,您不会有需要对用户“隐藏”的“仅限 AJAX”的 URL。
关于php - CodeIgniter Ajax 层,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9693248/