javascript刷新阻止cgi执行

javascript刷新阻止cgi执行,javascript,iframe,cgi,refresh,Javascript,Iframe,Cgi,Refresh,我正在尝试在cgi执行后刷新页面。在我的cgi中,tcp数据包被发送到一个端口。它在隐藏的iframe中调用。以下是我的javascript代码: function xx() { iframe = document.getElementById('i'); iframe.src = path+'?'+ac+'-'+type; // it is sth like that "a.cgi?11-1" location.reload(true); } 当我禁用location.r

我正在尝试在cgi执行后刷新页面。在我的cgi中,tcp数据包被发送到一个端口。它在隐藏的iframe中调用。以下是我的javascript代码:

function xx()
{

    iframe = document.getElementById('i');
    iframe.src = path+'?'+ac+'-'+type; // it is sth like that "a.cgi?11-1"

location.reload(true);
}
当我禁用location.reload时,cgi工作,但如果我启用它,cgi不工作,不会发送数据包。我试图在执行和重新加载之间设置睡眠,但也没有成功。
cgi执行后是否有其他方法刷新页面

您可以为
iframe
设置
onload
处理程序,以便
reload
在iframe成功加载之前不会触发(这意味着您的cgi已经执行):

如果在重新加载之前还需要时间延迟,可以执行以下操作:

function xx() {
    iframe = document.getElementById('i');
    iframe.onload = function() {
        setTimeout(function() {location.reload(true)}, 5000);
    }
    iframe.src = path+'?'+ac+'-'+type; // it is sth like that "a.cgi?11-1"
}

谢谢你的回复。我测试过了。它通常工作,但有时刷新速度比cgi快。我得到了错误的结果。在重新加载之前,我尝试过睡眠,但没有成功。@brknl-在iframe根据此代码完成加载之前,不可能进行此重新加载。而且,在.src中指定的URL完成加载之前,iframe不会完成加载,这意味着必须完成cgi。我想知道您是否在其他地方有导致问题的代码。cgi向某个地方发送一个数据包,并使用该数据包设置一些参数。我尝试通过刷新再次获取这些参数,以了解我的设置过程是否正常。如果加载了帧,则可能会出现错误,但此设置过程比该设置过程慢。那么,我如何才能让睡眠或其他事情稍等片刻,或者你有什么其他方法可以建议吗?@brknl-为什么你的cgi不将数据返回到iframe,直到它处理完其他内容。iframe将等待cgi响应完成,并且在cgi完成之前不会加载。使用我推荐的代码,我认为您可以在cgi中修复它。@brknl-我添加了第二个选项,在重新加载之前有一个时间延迟,但我认为如果cgi id编码为在其他工作完成之前不返回iframe的请求数据,则不必这样做。cgi脚本应该处理刷新操作。使用JavaScript刷新页面可能会导致类似这样的意外行为,所以让服务器端代码来处理它。
function xx() {
    iframe = document.getElementById('i');
    iframe.onload = function() {
        setTimeout(function() {location.reload(true)}, 5000);
    }
    iframe.src = path+'?'+ac+'-'+type; // it is sth like that "a.cgi?11-1"
}