【问题标题】:Yii CList view update is throwing "page not found"?Yii CList 视图更新抛出“找不到页面”?
【发布时间】: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 管理器的规则中。虽然我没有运气重现您的问题。我不确定我是否了解您的业务逻辑,但假设某些id GET 参数是您的2-open-yes 并且将'buyers/view/<id:[A-Za-z0-9-]+>' => 'buyers/view' 作为URL 管理器的规则,一切都对我有用-CListView 通过ajax 请求成功更新.如果可能,请使用 URL 规则以及buyers/view 操作的相关部分更新您的问题。

标签: yii


【解决方案1】:

打开安装了firefox + firebug的调用页面

打开萤火虫

点击 .NET 和“XHR”过滤器

然后单击链接/按钮/或其他内容并阅读您的代码正在调用的完整网址

或控制器/动作不存在

或者只是参数的名称与动作签名不同......

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-19
    • 2015-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-23
    相关资源
    最近更新 更多