0

我正在用 CakePhp 开发一个网站。我有一个视图可以通过表单中的复选框选择列表中的某些项目,并且每个项目都有一个“更多信息”链接,该链接使用该项目的其他信息刷新页面。

问题是,如果我单击任何“更多信息”链接,我显然会丢失有关之前选择了哪些复选框的数据。我唯一想到的是每次更改复选框时都更新 $this->Session ,但是当发生这种情况时,我需要在控制器中触发一个函数。

还有其他解决方案吗?

我一直在到处搜索,发现了一些关于 Javascript 和 JQuery 的东西,但我也不知道如何做到这一点。

提前致谢。

4

2 回答 2

2

如果您不介意发送所有文本,这很容易:

<div class='article'>
    <div>short text<a href="#" class="morebtn">more info</a></div>
    <div class="more hidden">long text</div>
</div>

jQuery部分

$(".article").on('click', '.morebtn', function(){
  $(this).parents('.article').find('.more').removeClass('hidden');
});

css

.hidden { display: none }

这是一个小提琴

更好的解决方案是使用 ajax 请求。实施起来也不难。

这是一个显示非常基本的请求的小提琴。如果您需要执行更高级的请求,您也可以使用完整的$ajax请求。

请注意,由于 url 无效,ajax 请求的示例不起作用。url 需要来自与当前页面相同的来源(相同的协议、域和端口)才能使其正常工作。有解决方法,但这是一个不同的问题

于 2012-08-21T12:35:38.790 回答
0

阅读 AJAX,这是一项非常酷的技术,它可以让您轻松完成所需的工作。大纲:

  • 单击该按钮时,浏览器会向服务器发送 AJAX 请求,以使文本显示在页面的某处。
  • 当浏览器收到响应(来自服务器的一些 HTML 片段)时,会调用一个函数,如下所示:

    函数(数据){$('#description').html(数据);}

执行 AJAX 请求需要 5-10 行代码(主要是配置 + 构建 URL)。

主要工作是在服务器端,您需要编写一个提供文本的控制器。

由于页面从不重新加载,因此无需保留表单值。

要学习 AJAX,请从本教程开始

于 2012-08-21T12:42:27.600 回答