2012-07-02 50 views
1

我想使用ajax保存複選框的值。如何使用ajax保存cakephp中的複選框值?

這是我最新的代碼,我希望更新使用ajax。

這裏是視圖

<?php $i = 0; 
     foreach ($summary as $sum) { 
      ?> 
      <tr class="font-size12"> 
       <td><p><?php echo $sum['posts']['title']; ?></p></td> 
       <td class="width450"><p><?php echo $sum['posts']['content']; ?></p></td> 
       <td><p class="margin-left28"><?php echo $sum['members']['username']; ?></p></td> 
       <td><p><?php echo $sum['posts']['deadline']; ?></p></td> 
        <?php echo $this->Form->create("Posts", array("action" => "update_checkbox")) ?> 
       <td> 
        <?php 
        echo $this->Form->input('Post.' . $i . '.id', array("type" => "hidden", "label" => false, "value" => 
         $sum['posts']['id'])) 
        ?> 
        <?php 
        echo $this->Form->input('Post.' . $i . '.done', array("type" => "checkbox", "label" => false, "value" => "1", "id" => "idCheck[]", "onclick" => "getboxes()")) 
        ?> 
       </td> 
      </tr> 

      <?php $i++; 
     } 
     ?> 
    </table> 
<?php echo $this->Form->end() ?> 

的JavaScript

function getboxes(){ 
    $("idCheck[]").click(function(){ 
     $.ajax({ 
      url: '../../../../Controller/PostsController', 
      data: { action: 'checkingBox' }, 
      type: 'post' 
//   , 
//   success: function(output) { 
//    alert(output); 
//   } 
     }); 
    }); 
} 

控制器

public function update_checkbox() { 
     // debug($this->data); 
     $var = $this->Post->saveCheckBox($this->data); 
     $this->set("result", $var); 
    } 

模型

public function saveCheckBox($checkbox) { 
     debug($checkbox); 
     $this->saveAll($checkbox['Post']); 
    } 

編輯:我在複選框中添加了一個監聽器

+0

你有多遠?你有沒有把聽衆放在啓動功能的複選框上?如果你已經這樣做了,請查看JQuery ajax函數。它可以發送包含數據的發佈請求,其行爲與普通發佈的表單類似。 – swiecki

+0

@swiecki yeps我在複選框中添加了一個偵聽器,但仍然不會在DB中保存一個值:( – Catherine

回答

0

根據您當前的代碼,有兩種方法將複選框值存儲到數據庫中。 要麼你將不得不處理接收到您的ajax_method發佈數據() 並使其數組像下面

[Post] => array(
       [0] => .... 
       [1] => .... 
       ); 

然後你c。將使用$這個 - >後>白水($這個 - >請求 - >數據);

或者您可以使用以下代碼將複選框值保存到數據庫中。

echo $this->Form->input('Case.CHECK_ID][', array('type' => 'checkbox')); 

然後你可以使用saveAll()方法。