CodeIgniter - 提交表单后刷新div

时间:2012-06-13 23:27:45

标签: php forms codeigniter

我的控制器从数据库模型中获取数据,并将它们发送到视图。在视图中,我做foreach循环以向每个实体绘制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 ..但我不知道他们的逻辑,他们将如何知道确切的div或实际实体的确切(更新)数据?我应该从数据库中获取它吗?我只是对js / jquery / ajax感到困惑。

1 个答案:

答案 0 :(得分: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的帖子变量。

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