如何局部刷新?

litgle 2012-09-21 11:04:53
我在goahead里实现一个函数,叫showdate(),功能是显示系统时间的字符串。

然后在一个页面里这样调用函数显示系统时间:
<h5><% showdate(); %></h5>

如果我刷新页面,就能显示系统当时的时间。

现在我想仅刷新<h5><% showdate(); %></h5>这一部分内容而不是整个页面,那么有什么办法可以做到?
...全文
342 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
litgle 2012-09-26
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 的回复:]

使用AJAX是根本没有任何必要的,循环访问服务器时间只会浪费资源,首次加载时服务器访问时间即可确定时间节点,在此时间节点上使用JS setInterval 循环渲染 就可以循环刷新准确时间了。
[/Quote]

这只是个例子。
Ahoo 2012-09-25
  • 打赏
  • 举报
回复
使用AJAX是根本没有任何必要的,循环访问服务器时间只会浪费资源,首次加载时服务器访问时间即可确定时间节点,在此时间节点上使用JS setInterval 循环渲染 就可以循环刷新准确时间了。
Ahoo 2012-09-25
  • 打赏
  • 举报
回复
首次加载页面时获取服务器时间,之后使用JS本地更新时间。
litgle 2012-09-24
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 的回复:]

引用 8 楼 的回复:

引用 7 楼 的回复:
setInterval定时启动ajax请求动态页,ajax请求的url加一个特别的参数以便识别是ajax请求,动态页判断是ajax请求的时候单独调用showdate()输出内容

示例代码如下,使用jq来实现
x.asp
HTML code
<%
ajax=requeset.querystring("ajax")
if a……
[/Quote]

谢谢您的回复!

我再次看了你提供的代码,还是跟预期的效果不同。

我提到的showdate()功能是由goahead提供的,它是用C语言写的一个函数,而不是写在网页里的。
goahead在解析<% showdate(); %>时会调用这个C语言函数。
Go 旅城通票 2012-09-24
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]

引用 7 楼 的回复:
setInterval定时启动ajax请求动态页,ajax请求的url加一个特别的参数以便识别是ajax请求,动态页判断是ajax请求的时候单独调用showdate()输出内容

示例代码如下,使用jq来实现
x.asp
HTML code
<%
ajax=requeset.querystring("ajax")
if ajax="1" then '为a……
[/Quote]

不知道你认真看了没,ajax请求的数据就是由showdate提供的
litgle 2012-09-23
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 的回复:]

用jquery吧同志
[/Quote]

能详细点吗?
火雲邪神 2012-09-23
  • 打赏
  • 举报
回复
用jquery吧同志
litgle 2012-09-23
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]
setInterval定时启动ajax请求动态页,ajax请求的url加一个特别的参数以便识别是ajax请求,动态页判断是ajax请求的时候单独调用showdate()输出内容

示例代码如下,使用jq来实现
x.asp
HTML code
<%
ajax=requeset.querystring("ajax")
if ajax="1" then '为ajax请求,
showdate(……
[/Quote]

您提供的这个办法实现了局部刷新的效果,非常好!谢谢!

不过还有另外一个问题,刷新的数据必须是要由goahead服务器提供,否则就没有刷新的意义了,您的这个办法里好像还没有实现这个效果。
su27ubk 2012-09-22
  • 打赏
  • 举报
回复
楼主:<h5 id="time"></h5>
以下是JS:<script type="text/javascript">
function showTime()
{
var today= new Date();
var h=today.getHours();
var m=today.getMinutes();
var s=today.getSeconds();
m=checkTime(m);
s=checkTime(s);
document.getElementById("time").innerHTML=h+":"+m+":"+s;
}
t=setInterval("showTime()",100);
function checkTime(x)
{
if (x < 10)
{
x="0"+x;
return x;
}
else
return x;
}
</script>
Go 旅城通票 2012-09-22
  • 打赏
  • 举报
回复
setInterval定时启动ajax请求动态页,ajax请求的url加一个特别的参数以便识别是ajax请求,动态页判断是ajax请求的时候单独调用showdate()输出内容

示例代码如下,使用jq来实现
x.asp
<%
ajax=requeset.querystring("ajax")
if ajax="1" then '为ajax请求,
showdate()
response.end'=========这里关键防止输出下面的其他html代码,这些代码之前不要有html代码,要不会一起输出
end if
function showdate()
response.write showdate
end function
%>
<script type="text/javascript" src="http://www.coding123.net/js/jquery.js"></script>
<script type="text/javascript">
setInterval(function(){
$("#h5time").load("x.asp", {ajax:1});

},10000)//10秒启动一次
</script>
其他html代码
<h5 id="h5time"><% showdate(); %></h5><!----加个ID,方便更新---->
litgle 2012-09-22
  • 打赏
  • 举报
回复
感谢以上各位的回复。

显示时间这个功能只是个例子,它一定是由goahead服务器提供的。
当解析到<% showdate(); %>时,goahead服务器会执行一些动作获取服务器的时间,并输出时间对应的字符串。

我现在想到思路是必须让goahead只解析<h5><% showdate(); %></h5>这段代码,其它代码不重新解析。
因为我现在已经采用的办法就是刷新整个页面,这样的效果不能让我满意,我在找办法有没有可能只解析刷新<h5><% showdate(); %></h5>。

1楼的办法不是我想要的,因为它取得的时间并不是由goahead对应的函数获得的。

2楼的办法与1楼是相同的方法,所以也用不上。

[Quote=引用 4 楼 的回复:]

很简单的 利用ajax 获取

1.定义个按钮 绑定个函数事件
2.在函数中利用ajax获取系统时间
[/Quote]
4楼可以进一步讲解一下吗?
YAVA_2009 2012-09-22
  • 打赏
  • 举报
回复
如2楼做法,用Ajax没必要
leonvan 2012-09-22
  • 打赏
  • 举报
回复
不知道你刷新是什么意思,如果按按钮,那就加个按钮,调用一个函数刷新,比如
function renewtime(){

这里先算出当前的时间,假如结果是time,那么再调用
document.getElementById("mytime").innerHTML=time;
}

如果要自动刷新,比如没xx秒或分钟,则要先设计一个定时器,网上搜索一下,定时调用renewtime()就可以了。

我不是专业的,每次写东西都是查参考手册和网上找点案例改改,所以没法快速给你一个完整的答案,sorry。
zhanglujie2008 2012-09-22
  • 打赏
  • 举报
回复
很简单的 利用ajax 获取

1.定义个按钮 绑定个函数事件
2.在函数中利用ajax获取系统时间
Go 旅城通票 2012-09-22
  • 打赏
  • 举报
回复
用js控制就好了,如2#的,ajax来做个有点大才小用
在data中定义刷新标识this.isReloadData 为true 当点击tap栏的时候调用此方法reload。比如你要切换tap栏实现刷新下面form表单等,相当于刷新页面。

52,799

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 Ajax
社区管理员
  • Ajax
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧