在我的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'));?>
对此事的任何帮助都将受到高度赞赏。如果问题不明确,请告诉我。
//点击“添加到关注列表”后 - 链接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;});});
//]]>
答案 0 :(得分:0)
对于那些可能遇到此问题的人 - 解决此问题的方法是在JsHelper链接方法调用的$ options数组中将buffer设置为false。