我正在使用CakePhp开发一个网站。 我可以通过表单中的复选框选择列表中的某些项目,每个项目都有一个“更多信息”链接,该链接会刷新页面以及该项目的其他信息。
问题在于,如果我点击任何“更多信息”链接,我显然会丢失之前选中的复选框的数据。我唯一想到的是每次更改一个复选框时更新$ this-> Session,但是当发生这种情况时我需要在控制器中触发一个函数。
还有其他解决方案吗?
我一直在各处搜索,我发现了一些关于Javascript和JQuery的东西,但我也不知道如何这样做。
提前致谢。
答案 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,这是一项非常酷的技术,可以让您轻松完成所需的操作。概要:
当浏览器收到响应(来自服务器的某些HTML片段)时,会调用一个函数,如下所示:
function(data){ $( '#说明')HTML(数据)。 }
执行AJAX请求是5到10行代码(主要是配置+构建URL)。
主要工作是在服务器端,您需要编写一个提供文本的控制器。
由于永远不会重新加载页面,因此无需保留表单值。
要学习AJAX,start with this tutorial。