2012-04-11 136 views
0

我想構建一個系統,我可以使用AJAX將數據提交給數據庫。我可以做到這一點,它運作得非常好。如何使用CakePHP和AJAX從表中的多條記錄中刪除單條記錄

但是,當我試圖刪除一條記錄時,我正在努力做類似的事情。我是使用Ajax的新手,特別是使用CakePHP,並且我發現整個概念非常令人難以置信。我可以使用純粹的HTML刪除記錄,將ID傳遞給控制器​​,然後重定向到原始頁面。這只是我正在努力的Ajax事情,顯然使用Ajax會是一個巨大的好處。

這是我在我的視圖代碼:

<table> 
     <tr> 
      <th>ID</th> 
      <th>Title</th> 
      <th>Content</th> 
      <th>&nbsp;</th> 
     </tr> 
     <?php foreach ($testing as $test) { ?> 
      <tr> 
       <td><?php echo $test['Testtable']['id']; ?></td> 
       <td><?php echo $test['Testtable']['title']; ?></td> 
       <td><?php echo $test['Testtable']['content']; ?></td> 
       <td><?php echo $this->Html->link('Delete', array('controller' => 'testing', 'action'=>'delete_ajax_data', $test['Testtable']['id']), null, 'Are you sure?');?></td> 
      </tr> 
     <?php } ?> 
    </table> 

這是我在我的控制器代碼:

function delete_ajax_data($id) { 
    $this->autoRender = false; 
    $this->layout = 'ajax'; 

    $this->loadModel('Testtable'); 

    $this->Testtable->delete($id); 
    $this->redirect('/test-area/'); 
} 

這是我到目前爲止的代碼爲我的阿賈克斯:

$(document).ready(function(){ 

    $('a.confirm_delete').click(function(event){ 
     event.preventDefault(); 

     $.ajax({ 
      url:'/testing/delete_ajax_data', 
      type:'POST', 
      data: $("a").attr("href").serialize() 

     });  
    }); 

}); 

乾杯的任何幫助,這是開始壓我!

編輯:我使用的代碼錯了,我現在已經包含了正確的代碼。仍然沒有工作,但!

回答

0

我已經想通了。代碼中有幾個問題。

第一部分是在視圖中。除了使用CakePHP的鏈接建設者的我使用的HTML鏈接,而不是:

<td><a href="id=<?php echo $test['Testtable']['id']; ?>" class="deleteajax">Delete</td> 

然後,對於阿賈克斯,我用下面的代碼:

$('a.deleteajax').click(function(event){ 
event.preventDefault(); 

var answer = confirm("Delete this record?") 
if (answer){ 
    $.ajax({ 
     url:'/testing/delete_ajax_data/', 
     type:'GET', 
     data: $(this).attr("href") 

    }); 
} 

return false; 
}); 

新的Ajax代碼使用GET而不是POST,這返回我刪除作爲ID變量記錄,然後可以在控制器中使用這樣的ID:

function delete_ajax_data() { 
    $this->autoRender = false; 
    $this->layout = 'ajax'; 

    $id = $_GET['id']; 

    $this->loadModel('Testtable'); 

    $this->Testtable->delete($id); 
} 

有可能是一個更好的方式來做到這一點比我做了什麼,但對於我是什麼這樣做的工作非常好。