2014-10-28 2 views
1

Я пытаюсь удалить данные CakePHP по ajax.Here я изменил кнопку postlink для простой кнопки HTML вроде какCakePHP Ajax удалить

<button class="del" id=<?php echo $user['User']['id']; ?>>Delete </delete> 

Вот теперь я могу получить идентификатор пользователя с помощью сильфона кода

$('document').ready(function(){ 
     $('.del').click(function(){ 
      var x=$(this).attr("id"); 
      alert(x); 
     }); 
    }); 

Я успешно получить идентификатор user.Now Я пытаюсь отправить его в UsersController удаления action.So я закодированы как

$('document').ready(function(){ 
     $('.del').click(function(){ 
      var x=$(this).attr("id"); 
      alert(x); 
      jQuery.get("<?php echo $this->webroot . $this->params["users"]; ?>/delete",{"id":x},function(data,stat){ 
           jQuery("#success").load("success.ctp"); 
      }); 
     }); 
    }); 

Теперь контроллер в действие Удалять я попытался

public function delete($id=NUll) { 
     $id=$_GET['id']; 
     $this->User->id = $id; 
     if ($this->User->delete()) { 
      $this->Session->setFlash(__('The user has been deleted.')); 
     } 
     return $this->redirect(array('action' => 'index')); 
    } 

Здесь не working.In контроллер, как я могу определить это?

+0

Что генерирует ВАШ БРАУЗЕР 'jQuery.get (" Webroot. $ This-> PARAMS [ "пользователей"]; ?>/delete ", {" id ": x}, function (data, stat) { jQuery (" # success "). load (" success.ctp "); });' как HTML? –

ответ

0

Здесь неправильно был только URL, я изменил его, и теперь он работает нормально

echo $this->webroot . $this->params["users"]; ?>/delete" 

К

echo Router::url(array('controller'=>'users','action'=>'delete'));?>" 
0

Если и использовать перед фильтром,

function beforeFilter() 
{ 
    //Here set Which pages should be accessable to various users 
    $adminPages =array('delete'); 
    $this->Auth->allow($adminPages); 

    ...... 
} 

Позвольте ему быть выполнено с помощью Auth позволяет.

Если это также работает нормально, проверьте правильность строки AJAX. Проверьте с помощью MANUAL DELETE, как abc.com/Users/delete/id:2 Просто скопируйте строку пасты u и получите в jQuery.get(). Удаляет ли это правильно?

ЕСЛИ ВСЕ не работает TRY следующее: :)

public function delete($id=NUll) { 
    $id=$_GET['id']; 
    $this->User->id = $id; 
    if ($this->User->delete()) { 
     $this->Session->setFlash(__('The user has been deleted.')); 
    } 
    return $this->redirect(array('action' => 'index')); 
} 

И Аякса:

 jQuery.get("<?php echo $this->webroot . $this->params["users"].'/delete/';?>"+x+"",{"id":x},function(data,stat){ 
          jQuery("#success").load("success.ctp"); 
     }); 
0

попробовать это, если вы хотите использовать AJAX

public function delete_user() { 
     $this->autoRender = false; 
     if ($this->request->data) { 

     $this->User->id = $this->request->data['id']; 
     $update = $this->User->saveField($this->request->data['field'], $this->request->data['value']); 
     if ($update) { 
      $repsonce['success'] = '1'; 
      $this->Session->setFlash(__d('User', 'User Deleted successfully'), 'default', array('class' => 'alert alert-success')); 
     } else { 
      $repsonce['success'] = '0'; 
     } 
    } else { 

     $repsonce['success'] = '0'; 
    } 
    echo json_encode($repsonce); 
}