2013-06-24 4 views
0

Я искал SO для ответа на этот вопрос, и хотя я могу найти ответы, касающиеся структуры Zend и AJAX, я не могу исправить свою проблему.Zend PHP простой AJAX

Я хочу удалить строку таблицы с помощью метода POST AJAX.

Моя причина для этого состоит в том, что мой веб-разработчик может больше вносить изменения в мой проект, поэтому мне нужно вмешаться и попытаться сделать что-то самостоятельно (так что я упущу некоторые очевидные вещи).

HTML:

<a class="btn btn-danger delete_request_button" data-rid="<?php echo $row['id']?>" data-did="<?php echo $row['dealer_id']?>" href="#delete_request_button" data-toggle="modal">Delete</a> 

JQuery:

jQuery('.delete_request_button').click(function(){ 
    var id = jQuery(this).attr('data-rid'); 
    jQuery('#request_id').val(id); 

    jQuery.post('<?php echo $this->baseUrl("requests/delete")?>', { id: id }, function(response) { 

    }).complete(function(){ 
     alert(id + ' deleted') 
    }); 
}); 

Контроллер:

function deleteAction() 
{ 
    $id = $this->getRequest()->getParam('id'); 
    if($request->isPost()) { 
     $this->model_dealer->deleteRequest($id); 
     exit(); 
    } 
} 

Модель:

public function deleteRequest($id) 
{ 
    $where = $db->quoteInto('id = ?', $id); 

    $db->delete('dealers_vehicle_requests', $where); 
} 

И вот мой стол:

CREATE TABLE `dealers_vehicle_requests` (
    `id` bigint(20) NOT NULL AUTO_INCREMENT, 
    `dealer_id` bigint(20) DEFAULT NULL, 
    `message` text, 
    `requested_on` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, 
    `status` char(1) DEFAULT 'P', 
    PRIMARY KEY (`id`) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=10 ; 

Я понимаю, что это, вероятно, коллажи из ужасного кода, но я использую SO в качестве последнего попробуйте решить эту проблему.

Спасибо!


Edit: фиксированная

Модель:

public function deleteRequest($id) 
{ 
    $where = $this->dealers_subscriptions->getAdapter()->quoteInto('id = ?', $id); 
    $this->dealers_vehicle_requests->update(array('status' => 'D'), $where); 
} 

Контроллер:

function deleteAction() 
{ 
    $request = $this->_request; 
    $id = $request->getParam('id'); 

    if($request->isPost()) { 
     $this->model_dealer->deleteRequest($id); 
     exit(); 
    } 
} 

Все остальное хранится са меня.

Спасибо всем, что помогло с этим вопросом.

+1

Ничто фактически не удаляется из базы данных.Я получаю предупреждение, например «9 удаленных», но когда я обновляю строку, все еще там, и база данных не изменяется. –

ответ

1
public function deleteRequest($id) 
{ 
    $where = $db->quoteInto('id = ?', $id); 

    $db->delete('dealers_vehicle_requests', $where); 
} 

Вы забыли инициализировать переменную $db там?

Попробуйте добавить:

$db = Zend_Db_Table::getDefaultAdapter();

EDIT

попробовать Также этот JS:

jQuery('.delete_request_button').click(function(){ 
    var id = jQuery(this).attr('data-rid'); 
    jQuery('#request_id').val(id); 

    jQuery.post('<?php echo $this->baseUrl("requests/delete")?>', { id: id }, function(response) { 
     alert(id + ' deleted') 
    }); 
}); 
+0

Спасибо за ваш ответ. Я добавил эту строку, но она все еще не работает. Для чего это стоит, я получаю предупреждение при нажатии кнопки (с правильным идентификатором тоже), он просто не взаимодействует с сервером. ** Редактировать: ** В модели, созданной моим разработчиком, он использует этот синтаксис: '$ this-> dealers_vehicle_requests-> insert (array ('dealer_id' => $ id, 'message' => $ message));' –

+0

@ user1641814 Я добавил правильный JS –

+0

Большое спасибо, но он по-прежнему не хочет работать. –