单击两次Ajax链接无法按预期工作(Cake PHP)

时间:2011-10-13 11:51:35

标签: jquery ajax cakephp-1.3

在我的Cake PHP应用程序中,用户可以将一个团队添加到他们的监视列表中。我已经使用JQuery JsHelper添加和删除了关注列表Ajax操作。两种操作都可以独立工作。

但是,当用户将团队添加到监视列表(工作正常)并立即单击从监视列表链接中删除时,它仅加载删除视图,而不是在不刷新页面的情况下更新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代码

//点击“添加到关注列表”后 - 链接ID不正确

<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;});});
//]]> 

//重新加载页面后“添加到关注列表” - 链接ID正确

<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 :(得分:0)

对于那些可能遇到此问题的人 - 解决此问题的方法是在JsHelper链接方法调用的$ options数组中将buffer设置为false。