2012-06-13 146 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