使用CodeIgniter / MVC通过AJAX加载文件

我目前正在重写我的整个网站 ,以便它与CI兼容。 我对CI和MVC模式一般都很新。 我遵循了本教程 ,为MVC模式的视图部分制作了一个相当不错的模板。 问题是,我的很多网站都使用jQuery / AJAX来使它更具动态性。 例如,在我网站上的所有页面上,我有一个输入字段,使用jQuery在keyup上加载PHP文件。

 $("#search_bar").keyup(function(){ var search = $("#search_bar").val(); var url = "search_bar.php"; var data = "q="+ search; $('#livesearch').load(url, data); $("#livesearch").slideDown("fast"); });   

加载结果所需的所有后端工作都发生在通过jQuery(search_bar.php)加载的PHP文件中。 那么,“search_bar”应该是自己的View,它由自己的Controller触发,然后由名为“search_bar”的模型建模? 同样,我对MVC模式非常陌生,并且不太确定如何将AJAX与像CI这样的面向对象框架正确集成。

谢谢

ajax请求中直接调用视图不是一个好的做法,调用加载视图的控制器或直接在控制器的函数中执行操作

  

您的控制器代码

  class yourcontrollername extends My_Controller { public function search_bar_yourfunction() { //do your stuff and store in the $data[] array $this->load->view("search_bar",$data); //search_bar.php die(); } } } 

您应该从View到Controller:

  

然后在您的控制器中,根据需要加载模型:

 public function weigeren() { $user = $this->CI->authex->getUserInfo(); $data['title'] = "Test"; $this->load->model('search_model'); $query = $this->input->get('q'); if (isset($user)) { echo $this->search_model->search($query); } } 

我找到了一种在CodeIgniter 3中加载ajax(jquery)的方法。例如,

文件夹结构:

  1. 控制器/ upload.php的
  2. 视图/管理/ ajax_view / ajax_images.php

控制器/上传:

 public function process() { $data['my_picture'] = array( 'pic_id' => '1', 'pic_path' => 'http://example.com/images', ); $this->load->view('admin/ajax_view/ajax_images', $data); } 

视图/管理/ ajax_view / ajax_images:

  $row): ?>   

视图/管理/ form_upload:

   1      

这样,我分离了整个页面的ajax视图,并在事件触发时加载ajax视图。