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.

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...