我定义了三个javascript函数,它们创建了对我的java控制器的ajax调用。我为两个函数设置了超时,每3秒更新一次ping状态,并每5分钟更新一次性能状态。每3秒ping一次更新似乎工作正常但是当调用updatePerformance方法时,我的控制器方法会连续执行5次左右,直到应用程序挂起。任何想法为什么一个工作,另一个setTimeout不是吗?这是我的javascript函数:
<script type="text/javascript">
function updateReachability() {
$.ajax({
url: 'updatePing.htm',
type: 'GET',
success: function(data) {
$('#site').html(data);
}
});
}
setTimeout(updateReachability, 3000);
function updatePerformance() {
$.ajax({
url: 'updatePerformance.htm',
type: 'GET',
success: function(data) {
$('#site').html(data);
}
});
}
setTimeout(updatePerformance, 300000);
function updateSiteList() {
$.ajax({
url: 'connector.htm',
type: 'GET',
success: function(data) {
$('#site').html(data);
}
});
}
答案 0 :(得分:0)
您可能希望将函数包装在setTimeout本身中,以便settimeout特定于该函数而不是其他任何内容。
<script type="text/javascript">
function updateReachability() {
setTimeout(function() {
$.ajax({
url: 'updatePing.htm',
type: 'GET',
success: function(data) {
$('#site').html(data);
}
});
},3000);
可能这对你有用。
答案 1 :(得分:0)
不知道为什么会这样,但是创建了一个单独的函数来设置两个超时值,然后在body onload上调用它:
<script type="text/javascript">
function updateSiteList() {
$.ajax({
url: 'connector.htm',
type: 'GET',
success: function(data) {
$('#site').html(data);
}
});
}
function updateReachability() {
$.ajax({
url: 'updatePing.htm',
type: 'GET',
success: function(data) {
$('#site').html(data);
}
});
}
function setTimeouts() {
setInterval(updateReachability, 3000);
setInterval(updatePerformance, 300000);
}
function updatePerformance() {
$.ajax({
url: 'updatePerformance.htm',
type: 'GET',
success: function(data) {
$('#site').html(data);
}
});
}