Подтверждающее действие перед обработкой! - PullRequest
0 голосов
/ 07 июля 2010

Я делаю сайт управления контактами в codeigniter, у меня есть функция, которая удаляет контакт на основе идентификатора.

Например, на странице будут перечислены все контакты. И у каждого контакта будет ссылка «удалить». Ссылка будет на функцию, передающую идентификатор, например:

www.site.com/index.php/action/delete/23

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

Ответы [ 2 ]

3 голосов
/ 08 июля 2010

Вам нужно приглашение javascipt:

Ваш JS

function confirm_delete(){
    var r=confirm("Are you sure?");
    if (r==true){
      //Do somthing
    }else{
      //cancel
    }
}

Затем добавьте событие onclick к вашей ссылке.

<a href="#" onclick="confirm_delete();">Delete</a>

Если вы хотите что-то блестящее и менее навязчивое, могу ли я предложить jquery с одним из нескольких плагинов диалогового окна подтверждения.

http://projectshadowlight.org/jquery-easy-confirm-dialog/

http://kailashnadh.name/code/jqdialog/

1 голос
/ 08 июля 2010

У вас может быть страница подтверждения с формой для отправки на тот же URL.В контроллере проверьте, была ли отправлена ​​форма.Если это так, удалите контакт.Если нет, отобразите страницу подтверждения.

function delete($id)
{
    if ($this->input->post('confirm'))
    {
        $this->contact_model->delete($id);
    }
    else
    {
        $contact = $this->contact_model->get_contact($id);
        $this->load->view('delete_confirm', array('contact' => $contact));
    }
}

Если вам не нравится идея дополнительной страницы, вы можете использовать некоторый javascript для отображения окна подтверждения и сделать AJAX-сообщение, если пользователь подтверждает.1004 *

Редактировать:

Кроме того, я бы не стал реализовывать удаление через HTTP GET.Паук или бот, следуя ссылкам на удаление, могут случайно удалить все контакты.Лучше использовать HTTP POST.

...