2012-06-13 80 views
1

我控制器从数据库中获得模型上传数据,向他们查看。鉴于我做foreach循环来绘制div到每个实体。每个div都有一个表单元素来评估它的实体。笨 - 刷新DIV后提交表单

控制器:

function index(){ 
    $data['main_content'] = 'list'; 
    $data['entities'] = $this->database_model->getEntities(); 
    $this->load->view('template', $data); 
} 

function postRate(){ 
    $rate = array(
     'entity_id' => $this->input->post('entity_id'), 
     'owner_id' => $this->input->post('owner_id'), 
     'value' => $this->input->post('value') 
    ); 
    $this->database_model->persistRate($rate); 
    $this->index(); 
} 

型号:

function getEntities(){ 
    return $this->db->get('entity')->result(); 
} 

function persistRate($rate){ 
    return $this->db->insert('rate', $rate); 
} 

查看:

<?php foreach($entities as $entity) : ?> 
    <div class="entity"> 
     <?php echo form_open('entities/postRate/', $attr); ?> 
     <?php echo form_hidden('entity_id', $entity->id); ?> 
     <?php echo form_hidden('owner_id', $userid); ?> 
     <?php echo form_hidden('value', 1); ?> 
     <?php echo form_submit('submit', '+1'); ?> 
     <?php echo form_close(); ?> 
    </div> 
<?php endforeach; ?> 

排名后这种情况下,整个页面将重新加载,但我想只刷新该div表单被提交的地方。我知道JavaScript或jQuery的可以做到这一点,.. UPDATE ..但我不知道他们的逻辑,他们怎么会知道确切的股利或实际实体的确切(更新)数据?我可以从数据库中得到它吗?我只是与js/jquery/ajax混淆。

+1

查找到AJAX。无论您是否使用CodeIgniter都没关系,它确实与此无关。 – Styxxy

+0

这里的逻辑是下一个,在视图上提交后,控制器调用模型并返回后,调用index方法再次获取数据并重新加载页面。对?我明白了,但是ajax的逻辑是什么?我看不到或者我不知道。 – Victor

回答

1

这是非常简单,可以在这里找到:http://api.jquery.com/jQuery.ajax/

下面是一个例子:

$.ajax({ 
    url: "http://localhost/your_site/controller/method/", 
    type: "POST", 
    data: {id : 123}, 
    dataType: "html", 
    success: function(data) { 
    $('.result').html(data); 
    } 
}); 

<div class="result"> 
//YOUR AJAX RESULT WILL BE HERE 
</div> 

你的控制器方法应该接受变量后叫id

这是一个基本的例子,你真的应该阅读的链接,并更多地了解它。 ;)

+0

谢谢,我检查它。 – Victor

+0

好吧,现在我可以发送POST到http:// localhost/my_site/controller/method,它只是工作,但PHP如何发送响应$ .ajax?返回实体;在该方法的结尾不起作用。成功:函数(数据){警报(数据)}是绝对空的。 – Victor

+0

我改变了回报实体;到print_r(实体);它似乎工作。有可能吗? – Victor