Двойной щелчок по ссылкам Ajax не работает должным образом (Cake PHP) - PullRequest
0 голосов
/ 13 октября 2011

В моем приложении Cake PHP пользователи могут добавить команду в свой список наблюдения.Я сделал добавление и удаление для наблюдения за операцией Ajax с использованием JQuery JsHelper.Обе операции работают нормально независимо.

Однако, когда пользователь добавляет команду в список наблюдения (работает нормально) и сразу нажимает на ссылку удаления из списка наблюдения, он загружает только представление удаления вместо обновления div без обновления страницы.Но после добавления команды в список наблюдения пользователь нажимает на некоторые другие ссылки (не-ajax), а затем пытается удалить группу из списка наблюдения, все работает нормально.

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

КОД КОНТРОЛЛЕРА

    function add($team_id = null) {
    if(!$team_id)   {
        $this->Session->setFlash(__('Invalid team', true));
        $this->redirect(array('controller' => 'teams', 'action' => 'index'));
    }

    $this->data['Watchlist']['team_id'] = $team_id;
    $this->data['Watchlist']['user_id'] = $this->Auth->user('id');      
    $this->Watchlist->create();
    $this->Watchlist->save($this->data);
    $this->set('current_city', $this->Cookie->read('_current_cityid'));
    $this->set('watchlist_id', $this->Watchlist->id);
    $this->render('add', 'ajax');
}

function remove($id = null) {
    if (!$id) {
        $this->Session->setFlash(__('Invalid ID for watchlist', true));
        $this->redirect(array('controller' => 'team', 'action' => 'index'));
    }
    $this->Watchlist->delete($id); 
    $this->set('current_city', $this->Cookie->read('_current_cityid'));
    $this->set('watchlist_id', $id);
    $this->render('remove', 'ajax');
}

Просмотр кода

//add.ctp    
<?php echo $this->Js->link(__('Unwatch', true), array('controller' => 'watchlists', 'action' => 'remove', $watchlist_id), array('class' => 'btn', 'update' => '#watch-btn'));?>

//remove.ctp
<?php echo $this->Js->link(__('Watch this Team', true), array('controller' => 'watchlists', 'action' => 'add', $watchlist_id), array('class' => 'btn', 'update' => '#watch-btn'));?>

Любая помощь в этом вопросе будет высоко оценена.Если проблема не ясна, пожалуйста, дайте мне знать.

JQuery Code

// После нажатия «Добавить в список наблюдения» - неверный идентификатор ссылки

<a id="link-1577632165" class="btn" href="/watchlists/remove/4e96d2ca-9a10-409d-b7f5-0a4507063618">Unwatch</a>

//<![CDATA[
$(document).ready(function () {$("#link-1949180817").bind("click", function (event) {$.ajax({dataType:"html", success:function (data, textStatus) {$("#watch-btn").html(data);}, url:"\/watchlists\/add\/4e7c5af6-7110-426a-80d4-062207063618"});
return false;});});
//]]> 

// После перезагрузки страницы «Добавить в список наблюдения» - ссылкаИдентификаторы верны

<a id="link-1441882285" class="btn" href="/watchlists/remove/4e96d31b-b600-4df3-9e86-1cb107063618">Unwatch</a>

//<![CDATA[
$(document).ready(function () {$("#link-1441882285").bind("click", function (event) {$.ajax({dataType:"html", success:function (data, textStatus) {$("#watch-btn").html(data);}, url:"\/watchlists\/remove\/4e96d31b-b600-4df3-9e86-1cb107063618"});
return false;});});
//]]> 

1 Ответ

0 голосов
/ 14 октября 2011

Для тех, кто может столкнуться с этой проблемой - решение этой проблемы состояло в том, чтобы установить для буфера значение false в массиве $ options вызова метода ссылки JsHelper.

...