您好我正在尝试刷新页面中的文本,该文本通知服务器端的计算状态,同时它们正在完成。计算以get请求开始,只有在get尚未完成时才进行刷新。我试图通过在setInterval中获取服务器上的文本文件的内容并在GET完成后关闭该设置间隔来实现此目的。我的问题是,当我看到正在发生的事情时,我只看到一个文本文件的请求,在开头,然后什么都没有。我期望从我的代码每隔200ms看到一个请求。 我正在附上js代码并提前感谢你。通过onclick启动的功能是disps(name);
function instant(nn) {
$.get("./track.txt", function (data) {
$('[name|="' + nn + '"]').html('');
$('[name|="' + nn + '"]').html(data);
/*$('[name|="'+ nn +'"]').first().html('');
$('[name|="'+ nn +'"]').first().append('<img src="loading.gif">');*/
});
}
function disps(nn) {
aa = $('[name|=input_data]').val();
/* $('[name|="'+ nn +'"]').html('');
$('[name|="'+ nn +'"]').html('Analysed');
$('[name|="'+ nn +'"]').first().html('');
$('[name|="'+ nn +'"]').first().append('<img src="loading.gif">'); */
var refreshId = setInterval(instant(nn), 200);
$.get("./loop.php?query=" + aa, function (data) {
/* $('[name|="'+ nn +'"]').find('img').remove().end(); */
instant2(nn, refreshId);
$('[name|="' + nn + '"]').first().append(data);
});
}
function instant2(nn, refreshIntervalId) {
clearInterval(refreshIntervalId);
$('[name|="' + nn + '"]').html('');
$('[name|="' + nn + '"]').first().html('');
}
答案 0 :(得分:2)
setInterval(instant(nn)
此呼叫instant(nn)
立即,就像任何其他功能调用一样
然后它将返回值传递给setInterval()
,就像任何其他函数调用一样。
这不是你想要做的。
相反,您希望传递一个调用instant()
:
function() { instant(nn); }
答案 1 :(得分:0)
激活函数并将结果值传递给setInteval的经典错误,而不是传递函数本身。
由于你想将一个参数传递给函数,并且setInterval不会为你做这个,你需要一个闭包 - 这很简单 -
将instant
包装在一个匿名函数中:
setInteval(function() { instant(nn); }, 200);