js中方法:
function refreshJsp(){
var logId = $("#logId").val(); //自身id
var status = $("#logStatus").val();//状态
var startDate = $("#logStartdate").val();
var endDate = $("#logEnddate").val();
window.location.href="listLogDataCycle.action?etlId="+
etlId+"&status="+status+"&startDate="+startDate+"&endDate="+endDate;
setTimeout("refreshJsp()",5000);
}
在jsp页面就遍历获得的list集合。我看网上setTime()的用法就是如此,但不知道为什么,就是出不来效果,只是在点击查询的时候查询了一次,定时没起效果,后将方法改成常量测试,setTimeout()的效果就出来了,测试代码如下:
var i=0;
function refreshJsp(){
var logId = $("#logId").val(); //自身id
var status = $("#logStatus").val();//状态
var startDate = $("#logStartdate").val();
var endDate = $("#logEnddate").val();
i++
alert(i);
//window.location.href="listLogDataCycle.action?etlId="+
//etlId+"&status="+status+"&startDate="+startDate+"&endDate="+endDate;
setTimeout("refreshJsp()",5000);
}
证明用法正确,但是一发请求就不行了,又怀疑是请求方式不对,就把请求方式换成了ajax请求,window.location.href="listLogDataCycle.action?”xxx请求换成了$.post("listLogDataCycle.action",{
"logId ":logId ,
xxxx
});
这次一次请求也不发了,求指点原因!
21 个解决方案
#1
在线等............................................
#2
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
<script>
function load(){
setTimeout("refreshJsp()",5000);
}
function refreshJsp(){
var logId = $("#logId").val(); //自身id
var status = $("#logStatus").val();//状态
var startDate = $("#logStartdate").val();
var endDate = $("#logEnddate").val();
window.location.href="listLogDataCycle.action?etlId="+
etlId+"&status="+status+"&startDate="+startDate+"&endDate="+endDate;
}
</script>
</head>
<body onload="load();">
</body>
</html>
#3
您这是等5秒调一次请求方法,也只是执行了一次。
#4
您这是等5秒调一次请求方法,也只是执行了一次。
#5
用setInterval()试试
#6
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
<script>
$(refreshJsp);
function refreshJsp(){
var logId = $("#logId").val(); //自身id
var status = $("#logStatus").val();//状态
var startDate = $("#logStartdate").val();
var endDate = $("#logEnddate").val();
window.location.href="listLogDataCycle.action?etlId="+
etlId+"&status="+status+"&startDate="+startDate+"&endDate="+endDate;
}
</script>
</head>
<body >
</body>
</html>
你这样写执行一次就跳转了 ,改成ajax吧
#7
画面都刷新了 还用什么ajax
#8
window.location.href="listLogDataCycle.action?etlId="+
etlId+"&status="+status+"&startDate="+startDate+"&endDate="+endDate;
这句话直接就把页面刷新了。ajax干嘛? 5秒刷新一次。查询一次有啥问题呢
etlId+"&status="+status+"&startDate="+startDate+"&endDate="+endDate;
这句话直接就把页面刷新了。ajax干嘛? 5秒刷新一次。查询一次有啥问题呢
#9
setTimeout 为延迟几秒执行;setInterval 为每隔几秒重复执行.你说你用错方法没有
#10
就LZ的页面逻辑而言,setTimeout/setInterval是一样的,没区别
因为页面加载后,设定5秒后刷新一次页面,页面都跳转了,计时重新开始,是延迟几秒执行还是每隔几秒重复执行都没有区别了...
因为页面加载后,设定5秒后刷新一次页面,页面都跳转了,计时重新开始,是延迟几秒执行还是每隔几秒重复执行都没有区别了...
#11
window.location.href="listLogDataCycle.action?etlId="+
etlId+"&status="+status+"&startDate="+startDate+"&endDate="+endDate;
这句话直接就把页面刷新了。ajax干嘛? 5秒刷新一次。查询一次有啥问题呢
我想实现的是循环查询
#12
就LZ的页面逻辑而言,setTimeout/setInterval是一样的,没区别
因为页面加载后,设定5秒后刷新一次页面,页面都跳转了,计时重新开始,是延迟几秒执行还是每隔几秒重复执行都没有区别了...
是的,对我来说这两个效果是一样的,我估计是页面一跳转(虽然是跳到本页面),setTimeout()就触发不了了,除非setTimeout()函数定义为页面一加载就执行,但是这不是我要的效果,我想的是点击查询的时候再触发循环查询,这就产生了矛盾。
#13
setTimeout 为延迟几秒执行;setInterval 为每隔几秒重复执行.你说你用错方法没有
setTimeout("函数名",时间);跟setInterval()没啥区别吧?
#14
那只能想点别的办法了,比如说用cookie记录或url后面带个什么参数来表示页面进入自动循环
以url为例,一开始的页面是a.html,当你按下自动循环按钮的时候,页面跳转到a.html?auto=1
页面内事先有一个方法
window.onload = function () {
var auto = url内auto的值 || 0;
if(auto == 1) {
setTimeout(refreshJsp, 5000);
}
}
页面内按钮的方法就是
function autoRefresh() {
var auto = url内auto的值 || 0;
if(auto == 1) {//开启了循环,则关闭
loaction.href = a.html;
}else{//没有开启,则打开
loaction.href = a.html?auto=1;
}
}
以url为例,一开始的页面是a.html,当你按下自动循环按钮的时候,页面跳转到a.html?auto=1
页面内事先有一个方法
window.onload = function () {
var auto = url内auto的值 || 0;
if(auto == 1) {
setTimeout(refreshJsp, 5000);
}
}
页面内按钮的方法就是
function autoRefresh() {
var auto = url内auto的值 || 0;
if(auto == 1) {//开启了循环,则关闭
loaction.href = a.html;
}else{//没有开启,则打开
loaction.href = a.html?auto=1;
}
}
#15
setTimeout 为延迟几秒执行;setInterval 为每隔几秒重复执行.你说你用错方法没有
setTimeout("函数名",时间);跟setInterval()没啥区别吧?
前者为被动执行,后者为主动执行.所以,显然是有区别的
你的流程应该目前是这样的:
用户点击查询-->显示结果-->调用函数去更新结果集-->函数执行-->页面刷新;然后就停止了,因为你并没有在页面加载的时候默认执行那个函数
所以,如果你就是想这样做的话,那么更改为:
用户点击查询-->显示结果-->调用函数去更新结果集-->函数执行[参数后附加一个参数,比如:&search=1]-->页面刷新-->在页面加载完成后,检测search的值是否等于1,如果等于1,则调用函数;
这样是不是符合你的意图??
按你的逻辑,我猜测:你是不是想在用户浏览查询结果的时候,如果有符合查询条件新记录增加了,则让新记录也显示在查询结果内??
如果是的话,建议你采用ajax进行局部的更新,没必要刷新整个页面
#16
如果你要使用setInterval就需要使用ajax dom技术来操作页面。setTimeout也可以。循环ajax最好使用callback回调函数避免异步时间上的bug。
如果你还是要刷新页面的话 那么你就只有使用存cookie了。没必要使用session那些加重服务器负载的技术。存cookie让你自己可以知道当前是什么操作然后对应的循环
如果你还是要刷新页面的话 那么你就只有使用存cookie了。没必要使用session那些加重服务器负载的技术。存cookie让你自己可以知道当前是什么操作然后对应的循环
#17
setTimeout 为延迟几秒执行;setInterval 为每隔几秒重复执行.你说你用错方法没有
setTimeout("函数名",时间);跟setInterval()没啥区别吧?
前者为被动执行,后者为主动执行.所以,显然是有区别的
你的流程应该目前是这样的:
用户点击查询-->显示结果-->调用函数去更新结果集-->函数执行-->页面刷新;然后就停止了,因为你并没有在页面加载的时候默认执行那个函数
所以,如果你就是想这样做的话,那么更改为:
用户点击查询-->显示结果-->调用函数去更新结果集-->函数执行[参数后附加一个参数,比如:&search=1]-->页面刷新-->在页面加载完成后,检测search的值是否等于1,如果等于1,则调用函数;
这样是不是符合你的意图??
按你的逻辑,我猜测:你是不是想在用户浏览查询结果的时候,如果有符合查询条件新记录增加了,则让新记录也显示在查询结果内??
如果是的话,建议你采用ajax进行局部的更新,没必要刷新整个页面
我是要监控调度的运行状态,所以要不断地更新查询,ajax局部刷新当然是最好的选择,开始考虑用ajaxtable做,但是客户要求当一个调度运行失败后,要在该条记录的运行状态后动态的生成一个"重启"的标志,这样一来,ajaxtable做这个重启标志就麻烦了,还有没有什么好的方法。
#18
要循环执行的话你可以把你的js函数在body 的onload时间里面调用。每次页面刷新的时候都会调用
#19
我是要监控调度的运行状态,所以要不断地更新查询,ajax局部刷新当然是最好的选择,开始考虑用ajaxtable做,但是客户要求当一个调度运行失败后,要在该条记录的运行状态后动态的生成一个"重启"的标志,这样一来,ajaxtable做这个重启标志就麻烦了,还有没有什么好的方法。
呃,不知道你的原始需求到底是什么意思.也不知道这个什么调度失败你如何判断,重启能干嘛?就觉得是个古怪的需求
#20
ajaxtable应该是拼接dom而来的吧、你获取到数据之后判断重新拼接dom就行了啊。真心搞晕了。
#21
setTimeout 为延迟几秒执行;setInterval 为每隔几秒重复执行.你说你用错方法没有
setTimeout("函数名",时间);跟setInterval()没啥区别吧?
前者为被动执行,后者为主动执行.所以,显然是有区别的
你的流程应该目前是这样的:
用户点击查询-->显示结果-->调用函数去更新结果集-->函数执行-->页面刷新;然后就停止了,因为你并没有在页面加载的时候默认执行那个函数
所以,如果你就是想这样做的话,那么更改为:
用户点击查询-->显示结果-->调用函数去更新结果集-->函数执行[参数后附加一个参数,比如:&search=1]-->页面刷新-->在页面加载完成后,检测search的值是否等于1,如果等于1,则调用函数;
这样是不是符合你的意图??
按你的逻辑,我猜测:你是不是想在用户浏览查询结果的时候,如果有符合查询条件新记录增加了,则让新记录也显示在查询结果内??
如果是的话,建议你采用ajax进行局部的更新,没必要刷新整个页面
大神,这个问题您能解答么?
http://bbs.csdn.net/topics/390700456
#1
在线等............................................
#2
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
<script>
function load(){
setTimeout("refreshJsp()",5000);
}
function refreshJsp(){
var logId = $("#logId").val(); //自身id
var status = $("#logStatus").val();//状态
var startDate = $("#logStartdate").val();
var endDate = $("#logEnddate").val();
window.location.href="listLogDataCycle.action?etlId="+
etlId+"&status="+status+"&startDate="+startDate+"&endDate="+endDate;
}
</script>
</head>
<body onload="load();">
</body>
</html>
#3
在线等............................................
您这是等5秒调一次请求方法,也只是执行了一次。
#4
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
<script>
function load(){
setTimeout("refreshJsp()",5000);
}
function refreshJsp(){
var logId = $("#logId").val(); //自身id
var status = $("#logStatus").val();//状态
var startDate = $("#logStartdate").val();
var endDate = $("#logEnddate").val();
window.location.href="listLogDataCycle.action?etlId="+
etlId+"&status="+status+"&startDate="+startDate+"&endDate="+endDate;
}
</script>
</head>
<body onload="load();">
</body>
</html>
您这是等5秒调一次请求方法,也只是执行了一次。
#5
用setInterval()试试
#6
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
<script>
$(refreshJsp);
function refreshJsp(){
var logId = $("#logId").val(); //自身id
var status = $("#logStatus").val();//状态
var startDate = $("#logStartdate").val();
var endDate = $("#logEnddate").val();
window.location.href="listLogDataCycle.action?etlId="+
etlId+"&status="+status+"&startDate="+startDate+"&endDate="+endDate;
}
</script>
</head>
<body >
</body>
</html>
你这样写执行一次就跳转了 ,改成ajax吧
#7
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
<script>
function load(){
setTimeout("refreshJsp()",5000);
}
function refreshJsp(){
var logId = $("#logId").val(); //自身id
var status = $("#logStatus").val();//状态
var startDate = $("#logStartdate").val();
var endDate = $("#logEnddate").val();
window.location.href="listLogDataCycle.action?etlId="+
etlId+"&status="+status+"&startDate="+startDate+"&endDate="+endDate;
}
</script>
</head>
<body onload="load();">
</body>
</html>
您这是等5秒调一次请求方法,也只是执行了一次。
画面都刷新了 还用什么ajax
#8
window.location.href="listLogDataCycle.action?etlId="+
etlId+"&status="+status+"&startDate="+startDate+"&endDate="+endDate;
这句话直接就把页面刷新了。ajax干嘛? 5秒刷新一次。查询一次有啥问题呢
etlId+"&status="+status+"&startDate="+startDate+"&endDate="+endDate;
这句话直接就把页面刷新了。ajax干嘛? 5秒刷新一次。查询一次有啥问题呢
#9
setTimeout 为延迟几秒执行;setInterval 为每隔几秒重复执行.你说你用错方法没有
#10
就LZ的页面逻辑而言,setTimeout/setInterval是一样的,没区别
因为页面加载后,设定5秒后刷新一次页面,页面都跳转了,计时重新开始,是延迟几秒执行还是每隔几秒重复执行都没有区别了...
因为页面加载后,设定5秒后刷新一次页面,页面都跳转了,计时重新开始,是延迟几秒执行还是每隔几秒重复执行都没有区别了...
#11
window.location.href="listLogDataCycle.action?etlId="+
etlId+"&status="+status+"&startDate="+startDate+"&endDate="+endDate;
这句话直接就把页面刷新了。ajax干嘛? 5秒刷新一次。查询一次有啥问题呢
我想实现的是循环查询
#12
就LZ的页面逻辑而言,setTimeout/setInterval是一样的,没区别
因为页面加载后,设定5秒后刷新一次页面,页面都跳转了,计时重新开始,是延迟几秒执行还是每隔几秒重复执行都没有区别了...
是的,对我来说这两个效果是一样的,我估计是页面一跳转(虽然是跳到本页面),setTimeout()就触发不了了,除非setTimeout()函数定义为页面一加载就执行,但是这不是我要的效果,我想的是点击查询的时候再触发循环查询,这就产生了矛盾。
#13
setTimeout 为延迟几秒执行;setInterval 为每隔几秒重复执行.你说你用错方法没有
setTimeout("函数名",时间);跟setInterval()没啥区别吧?
#14
那只能想点别的办法了,比如说用cookie记录或url后面带个什么参数来表示页面进入自动循环
以url为例,一开始的页面是a.html,当你按下自动循环按钮的时候,页面跳转到a.html?auto=1
页面内事先有一个方法
window.onload = function () {
var auto = url内auto的值 || 0;
if(auto == 1) {
setTimeout(refreshJsp, 5000);
}
}
页面内按钮的方法就是
function autoRefresh() {
var auto = url内auto的值 || 0;
if(auto == 1) {//开启了循环,则关闭
loaction.href = a.html;
}else{//没有开启,则打开
loaction.href = a.html?auto=1;
}
}
以url为例,一开始的页面是a.html,当你按下自动循环按钮的时候,页面跳转到a.html?auto=1
页面内事先有一个方法
window.onload = function () {
var auto = url内auto的值 || 0;
if(auto == 1) {
setTimeout(refreshJsp, 5000);
}
}
页面内按钮的方法就是
function autoRefresh() {
var auto = url内auto的值 || 0;
if(auto == 1) {//开启了循环,则关闭
loaction.href = a.html;
}else{//没有开启,则打开
loaction.href = a.html?auto=1;
}
}
#15
setTimeout 为延迟几秒执行;setInterval 为每隔几秒重复执行.你说你用错方法没有
setTimeout("函数名",时间);跟setInterval()没啥区别吧?
前者为被动执行,后者为主动执行.所以,显然是有区别的
你的流程应该目前是这样的:
用户点击查询-->显示结果-->调用函数去更新结果集-->函数执行-->页面刷新;然后就停止了,因为你并没有在页面加载的时候默认执行那个函数
所以,如果你就是想这样做的话,那么更改为:
用户点击查询-->显示结果-->调用函数去更新结果集-->函数执行[参数后附加一个参数,比如:&search=1]-->页面刷新-->在页面加载完成后,检测search的值是否等于1,如果等于1,则调用函数;
这样是不是符合你的意图??
按你的逻辑,我猜测:你是不是想在用户浏览查询结果的时候,如果有符合查询条件新记录增加了,则让新记录也显示在查询结果内??
如果是的话,建议你采用ajax进行局部的更新,没必要刷新整个页面
#16
如果你要使用setInterval就需要使用ajax dom技术来操作页面。setTimeout也可以。循环ajax最好使用callback回调函数避免异步时间上的bug。
如果你还是要刷新页面的话 那么你就只有使用存cookie了。没必要使用session那些加重服务器负载的技术。存cookie让你自己可以知道当前是什么操作然后对应的循环
如果你还是要刷新页面的话 那么你就只有使用存cookie了。没必要使用session那些加重服务器负载的技术。存cookie让你自己可以知道当前是什么操作然后对应的循环
#17
setTimeout 为延迟几秒执行;setInterval 为每隔几秒重复执行.你说你用错方法没有
setTimeout("函数名",时间);跟setInterval()没啥区别吧?
前者为被动执行,后者为主动执行.所以,显然是有区别的
你的流程应该目前是这样的:
用户点击查询-->显示结果-->调用函数去更新结果集-->函数执行-->页面刷新;然后就停止了,因为你并没有在页面加载的时候默认执行那个函数
所以,如果你就是想这样做的话,那么更改为:
用户点击查询-->显示结果-->调用函数去更新结果集-->函数执行[参数后附加一个参数,比如:&search=1]-->页面刷新-->在页面加载完成后,检测search的值是否等于1,如果等于1,则调用函数;
这样是不是符合你的意图??
按你的逻辑,我猜测:你是不是想在用户浏览查询结果的时候,如果有符合查询条件新记录增加了,则让新记录也显示在查询结果内??
如果是的话,建议你采用ajax进行局部的更新,没必要刷新整个页面
我是要监控调度的运行状态,所以要不断地更新查询,ajax局部刷新当然是最好的选择,开始考虑用ajaxtable做,但是客户要求当一个调度运行失败后,要在该条记录的运行状态后动态的生成一个"重启"的标志,这样一来,ajaxtable做这个重启标志就麻烦了,还有没有什么好的方法。
#18
要循环执行的话你可以把你的js函数在body 的onload时间里面调用。每次页面刷新的时候都会调用
#19
我是要监控调度的运行状态,所以要不断地更新查询,ajax局部刷新当然是最好的选择,开始考虑用ajaxtable做,但是客户要求当一个调度运行失败后,要在该条记录的运行状态后动态的生成一个"重启"的标志,这样一来,ajaxtable做这个重启标志就麻烦了,还有没有什么好的方法。
呃,不知道你的原始需求到底是什么意思.也不知道这个什么调度失败你如何判断,重启能干嘛?就觉得是个古怪的需求
#20
ajaxtable应该是拼接dom而来的吧、你获取到数据之后判断重新拼接dom就行了啊。真心搞晕了。
#21
setTimeout 为延迟几秒执行;setInterval 为每隔几秒重复执行.你说你用错方法没有
setTimeout("函数名",时间);跟setInterval()没啥区别吧?
前者为被动执行,后者为主动执行.所以,显然是有区别的
你的流程应该目前是这样的:
用户点击查询-->显示结果-->调用函数去更新结果集-->函数执行-->页面刷新;然后就停止了,因为你并没有在页面加载的时候默认执行那个函数
所以,如果你就是想这样做的话,那么更改为:
用户点击查询-->显示结果-->调用函数去更新结果集-->函数执行[参数后附加一个参数,比如:&search=1]-->页面刷新-->在页面加载完成后,检测search的值是否等于1,如果等于1,则调用函数;
这样是不是符合你的意图??
按你的逻辑,我猜测:你是不是想在用户浏览查询结果的时候,如果有符合查询条件新记录增加了,则让新记录也显示在查询结果内??
如果是的话,建议你采用ajax进行局部的更新,没必要刷新整个页面
大神,这个问题您能解答么?
http://bbs.csdn.net/topics/390700456