刷新页面,不会丢失cakephp中的复选框信息

时间:2012-08-21 12:24:52

标签: javascript jquery cakephp checkbox

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

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

还有其他解决方案吗?

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

提前致谢。

2 个答案:

答案 0 :(得分:2)

如果你不介意发送所有文字,那就很容易了:

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

jquery part

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

CSS

.hidden { display: none }

这是fiddle

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

这是显示最基本请求的fiddle。如果您需要执行更多高级请求,也可以使用完整的$ajax请求。

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

答案 1 :(得分:0)

阅读AJAX,这是一项非常酷的技术,可以让您轻松完成所需的操作。概要:

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

    function(data){      $( '#说明')HTML(数据)。  }

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

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

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

要学习AJAX,start with this tutorial