微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php – CodeIgniter Ajax层

我一直在做很多关于ajax的研究,但我似乎找不到很多关于用codeigniter创建一个单独的ajax层…我在codeigniter上执行教程视频的人的目录树中看到了ajax控制器,只是从来没有得到过一个真正的解释.我假设它是为了促进封装,并且仅向启用了javascript用户显示,这样,不知道如何在控制器中实现它以便在我自己的项目中使用.

解决方法:

这一切都取决于你在做什么.在我看来,最简单的方法是不要使用单独的AJAX控制器和URL,而是检测控制器中的请求并输出与平常不同的内容. 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');

控制器方法中的示例用法

$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);

这样,您就不会通过几个不同的控制器分布相同或相似的应用程序逻辑,并且您的代码可以更易于维护.例如,您的标准HTML表单可以使用AJAX发布到同一位置并具有不同的输出,因此它还有助于使progressive enhancement更容易和更清晰.此外,您不需要“隐藏”用户的“仅AJAX”URL.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐