使用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)的方法。例如,
文件夹结构:
- 控制器/ upload.php的
- 视图/管理/ 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视图。