【发布时间】:2012-11-28 22:49:04
【问题描述】:
我在一个视图中有一个 CListView 如下:
$this->widget('zii.widgets.CListView', array(
'id'=> 'recentBuyers',
'dataProvider'=> $dataProvider,
'itemView' => '_buyingHistory',
'summaryText' => '',
));
我有一个按钮可以增加此列表中的买家数量。问题是,一旦该操作成功完成,我执行以下操作:
$.fn.yiiListView.update("recentBuyers"); // refresh recent buyers
执行此操作时,我可以看到小进度圈在转动,但几秒钟后有一个弹出窗口抛出此错误:
Page not found
我最初的想法是您可能必须提供第二个参数,其中包含您要更新的内容。但我真的不希望它用数据更新,而是刷新。
问题 1:我该怎么做?
更新:我现在怀疑我可能没有更新 $dataProvider。 $dataProvider 变量填充如下:
$condensed = array_splice($data->buyers, 0, 5);
$dataProvider = new CArrayDataProvider ($condensed);
$data 通过 Controller 被注入到视图中:
$this->render('view', array('data' => $buyers ));
问题 2:我是否必须在调用 Javascript 之前更新此变量?
【问题讨论】:
-
增加列表中的买家数量是什么意思?将每页显示买家的限制从 5 个增加到 10 个?
-
当
$.fn.yiiListView.update("recentBuyers");检查URL路径进入firebug的控制台或chrome的网络面板 -
在页面上呈现列表的控制器操作的路由(
controller/action对)和 URL 是什么?正如我从yiiListView的JavaScript 代码中看到的那样,带有附加ajax参数的相同URL 用于更新列表。那么您的操作的 URL 必须是 localhost/b4a/www/buyers/view/2-open-yes 在我看来2-open-yes不能是原始操作的名称,所以您可能对 URL 管理器使用了一些规则,不是吗? -
粘贴你的 urlManager 配置,这应该有助于回答这个问题
-
是的,问题可能出在 URL 管理器的规则中。虽然我没有运气重现您的问题。我不确定我是否了解您的业务逻辑,但假设某些
idGET 参数是您的2-open-yes并且将'buyers/view/<id:[A-Za-z0-9-]+>' => 'buyers/view'作为URL 管理器的规则,一切都对我有用-CListView通过ajax 请求成功更新.如果可能,请使用 URL 规则以及buyers/view操作的相关部分更新您的问题。
标签: yii