我目前在重写整个过程现场矿井,使其与CI兼容。 我与CI和一般的MVC模式相当新。 我跟着这个教程 ,并取得了MVC模式的视图部分一个相当不错的模板。 问题是,有很多我的网站使用jQuery的/ AJAX,使其更具活力。 例如,在我所有的我的网站上的网页,我有一个使用jQuery来加载在KEYUP一个PHP文件的输入字段。
<script type="text/javascript">
$("#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");
});
</script>
<input type='text' maxlength='30' id='search_bar' autocomplete='off' placeholder='Browse Teams' />
<div id='livesearch' style='display:none;'></div>
所有这一切需要加载的结果后端工作在通过jQuery(search_bar.php)加载PHP文件发生。 所以,应该“search_bar”将自己的观点,即通过真实自己的控制器触发,然后通过一个名为“search_bar”模式模拟? 同样,我很新的MVC模式,并不太清楚如何正确使用,如Cl一个面向对象的框架整合AJAX。
谢谢
直接调用视图中的ajax
请求不是一个好的做法调用哪个加载视图控制器,或者直接做的东西,在控制器的功能
<script type='text/javascript'>
$('#search_bar').keyup(function(){
$.ajax({
url: 'yourcontrollername/search_bar_yourfunction',
type:'POST',
data: {q: search,
success: function(result){
$("#livesearch").html(result);
$("#livesearch").slideDown("fast");
}
});
});
</script>
控制器代码
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();
}
}
}
你应该从你查看到控制器去:
<script type='text/javascript' language='javascript'>
$('#search_bar').keyup(function(){
$.ajax({
url: 'search_bar.php',
type:'GET',
data: {q: search,
success: function(result){
//Insert code here
} // End of success function of ajax form
}); // End of ajax call
});
</script>
然后在你的控制器,加载一个模型,如果需要的话:
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);
}
}
我发现在笨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:
<?php foreach($my_picture as $key => $row): ?>
<td><?php echo $my_picture['pic_path']; ?></td>
<?php endforeach; ?>
视图/管理/ form_upload:
<tbody>
<tr class="trbody">
<th scope="row">1</th>
<!-- <td></td> --> <!--comments this because appends element jquery-->
</tr>
</tbody>
<script type="text/javascript">
$(document).ready(function(){
$('#my_button').click(function(e){
e.preventDefault;
$.ajax({
url: 'upload/process',
dataType: 'text',
type: 'post',
success: function(data){
$('.trbody')
.append(
'<td>'+ data + '</td>'
);
},
error: function(errorThrown){
console.log(errorThrown);
}
});
});
});
</script>
要这样,我隔整个视页面和负载阿贾克斯视图时,事件触发的AJAX的。