我有使用 3 个元素的视图书籍/浏览(这些元素不使用任何 requestAction,它们仅依赖于书籍/浏览控制器中设置的变量。每个元素都包含在具有此元素 id 的单独 div 中。现在我想要一个将使用 ajax 2 of 3 个元素刷新的链接。现在我有这样的东西(这是在书籍/浏览视图中):
echo $this->Js->link('Page 2', array('page' => 2), array('update' => '#element_id'));
在书籍/浏览控制器中我有:
...
$this->set('books', $books);
$this->set('author_keywords',$author_keywords);
$this->set('title_keywords',$title_keywords);
$this->set('languages',$languages);
$this->set('language_id',$language_id);
$this->set('limit',$limit);
$this->set('category_id',$category_id);
if ($this->RequestHandler->isAjax())
{
$this->autoRender = false;
$this->layout = 'ajax';
$this->render('/elements/element1');
}
return;
这很好用, div 'element_id' 中的元素用 elements/element1 的适当内容刷新
现在我想在单个请求中更新单独 div 中的 2 个元素。所以也许有选项可以传递给应该更新的链接 2 个 div - 但是如何使用控制器来渲染这 2 个 div 中的两个元素?
- 编辑
这样做的目的是省略刷新页面上的一个元素,因为它的数据库查询和呈现很慢,而且它不会改变......
- 编辑
好的,我有一个关于如何做到这一点的想法 - 在控制器中,我必须渲染两个元素并将这些元素返回的 html 保存在两个变量中,然后返回 ajax 数据,比如一些包含这些元素 html 的 2 个变量的数组。然后我必须使用JS来更新两个div......但是如何在控制器中做到这一点?