【问题标题】:CodeIgniter - Refresh div after submit formCodeIgniter - 提交表单后刷新 div
【发布时间】:2012-06-16 23:53:16
【问题描述】:

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

【问题讨论】:

  • 查看 AJAX。用不用 CodeIgniter 没关系,真的跟那个没关系。
  • 这里的逻辑是下一个,在视图上提交后,控制器调用模型,返回后,调用索引方法再次获取数据并再次加载页面。正确的?我明白了,但是ajax的逻辑是什么?我没有看到或我不知道。

标签: php forms codeigniter


【解决方案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 的 post 变量。

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

【讨论】:

  • 好的,现在我可以发送 POST 到 localhost/my_site/controller/method 并且它可以正常工作,但是 PHP 如何发送响应到 $.ajax 呢?返回实体;最后方法不起作用。成功:function(data) { alert(data) } 绝对是空的。
  • 我更改了退货实体;打印_r(实体);它似乎工作。有可能吗?
  • 不,这是愚蠢的,我的最后一个问题仍然有效,PHP 方法如何将任何响应发送回 $.ajax ?请帮忙
  • echo,所以如果你想,例如返回一个表,你应该这样做:echo "&lt;table&gt;&lt;tr&gt;Line&lt;/tr&gt;&lt;td&gt;Column&lt;/td&gt;&lt;/table&gt;"。这是JS 将收到的回报,您可以按照我的回答将其放置在您需要的地方。
猜你喜欢
  • 2012-08-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-31
  • 1970-01-01
相关资源
最近更新 更多