Multi Delete используя флажок - PullRequest
       3

Multi Delete используя флажок

0 голосов
/ 07 октября 2010

Я изучаю Cakephp, и я пытался удалить несколько (проверенных) записей с помощью флажка, но все еще не удалось.вот мой jQuery:

            var ids = [];
  $(':checkbox:checked').each(function(index){
   ids[index] = $(this).val();;
   alert(ids[index]);

  });

  //alert(ids);
  var formData = $(this).parents('form').serialize();


  $.ajax({
         type: "POST",
         url: "tickets/multi_delete",
         data:"id="+ids,
         success: function() {
     alert('Record has been delete');
    },
    error:  function(XMLHttpRequest, textStatus, errorThrown) {
       alert(XMLHttpRequest);
       alert(textStatus);
       alert(errorThrown); 
             }
   });

, а вот код в контроллере:

function multi_delete() {
  $delrec=$_GET['id'];
  //debuger::dump($del_rec);
  foreach ($delrec as $id) {

   $sql="DELETE FROM tickets where id=".$id;

   $this->Ticket->query($sql);
  }; 


 }

кто-нибудь, пожалуйста, помогите мне.спасибо

Ответы [ 3 ]

0 голосов
/ 07 октября 2010

использовать кодирование и декодирование JSON для последовательной передачи данных

0 голосов
/ 23 ноября 2010

Поскольку кодировка JSON не поддерживается в jQuery по умолчанию, загрузите плагин JSON для jQuery .

Тогда ваш javascript станет:1008 * controller :

var $components = array('RequestHandler');

function multi_delete() {
        if (!$this->RequestHandler->isAjax()) {
            die();
        }
        $records = $_POST['records'];
        if (version_compare(PHP_VERSION,"5.2","<")) {
            require_once("./JSON.php"); //if php<5.2 need JSON class
            $json = new Services_JSON();//instantiate new json object
            $selectedRows = $json->decode(stripslashes($records));//decode the data from json format
        } else {
            $selectedRows = json_decode(stripslashes($records));//decode the data from json format
        }
        $this->Ticket->deleteAll(array('Ticket.id' => $selectedRows));
        $total = $this->Ticket->getAffectedRows();
        $success = ($total > 0) ? 'true' : 'false';
        $this->set(compact('success', 'total'));
    }

Компонент RequestHandler гарантирует, что это AJAX-запрос.Это необязательно.

Соответствующий просмотр :

<?php echo '({ "success": ' . $success . ', "total": ' . $total . '})'; ?>

Желаю удачи!

0 голосов
/ 07 октября 2010

вы можете попробовать .join (',') для массива идентификаторов и затем explode () на стороне сервера, чтобы получить массив идентификаторов, переданных в сценарий.

например.

var idStr = ids.join(','); 

передать его (idStr) в вызов ajax

$.ajax({
     type: "POST",
     url: "tickets/multi_delete",
     data: {id:idStr},
    //more code cont.

на стороне сервера:

$ids = explode(',',$_POST['ids']);

ИЛИ

проверьте функцию jquery.param () в документации по jquery. Применить и к массиву IDS, а затем передать его в $ .ajax ({});

Примечание. Вы используете POST, а не GET HTTP METHOD в предоставленном вами коде

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...