我有一个ColdFusion页面,它循环在一个(可能)长的查询上,这个查询可能有几百个条目要循环和显示。当您第一次访问该页面时,可能会有3-10秒的延迟来加载该页面。最近我在Google上没什么好运气,也没有找到一个关于如何显示加载gif的很好的教程。有人能帮帮我吗?据我所知,ajax通常用于此,但如果可能的话,我想避开它,使用jQuery解决方案。提前感谢!
<cfdirectory directory="(dir name)" name="dirQuery" type="file" filter="*.pdf" action="list">
...html table start goes here...
<cfloop query="dirQuery">
...items go here...
</cfloop>这将只为内部用户,所以它不必是漂亮的。我只是不想让用户在他们认为页面没有加载时感到高兴。
发布于 2014-01-02 14:53:00
我不打算为此提供代码,因为有100万零1篇教程介绍了如何使用jquery实现ajax功能,但是作为6的入门教程,您需要查看jQuery ajax函数:
类似于:
$.ajax({
url: data.cfm
}).done(function(data){
alert(data);
});更多信息可在这里获得:http://api.jquery.com/jQuery.ajax/
您可能希望将已经拥有的代码移动到单独的cfm中,因此您最终可能会得到以下结果:
index.cfm ( jQuery调用代码所在)和;data.cfm (当前代码所在)。
发布于 2014-01-02 17:06:06
而不是使用<cfdirectory>获取一个目录中的所有文件和文件夹,然后使用查询的查询来提取仅为PDF的文件,您可能会更快地使用of目录上的filter属性只获取PDF文件,并避免随后执行QoQ操作。
<cfdirectory directory="(dir name)" name="dirQuery" filter="*.pdf" type="file">
<cfloop query="dirQuery">...</cfloop>发布于 2014-01-02 19:21:04
基于您的问题,您所要做的就是在请求开始时向浏览器发送一个“加载”标记,这样用户就可以在其他请求运行并生成其余标记时查看?
你想的只是一个“我在工作”的旋转球,还是显示运行缓慢的代码的实际进展的东西?你对此不太清楚。
如果它只是一个“我很忙”的图像,那么只需输出图像标记,并刷新缓冲区:
<img src="whatever.gif">
<cfflush>然后,该批将立即发送到浏览器,而其余的请求继续。
如果您想要提供真正的进度遥测,那么您将需要一个更复杂的解决方案,让浏览器轮询服务器(通过AJAX)以获得进程中的某个位置的指示。我相信JQuery等人有一个插件来做这件事。Google进度指示器“(类似于这)。
CF提供了一个标记,但我从不提倡使用服务器端代码来生成客户端功能。
https://stackoverflow.com/questions/20885122
复制相似问题