2012-04-05 6 views
0

Ich versuche, die Seite nach einer CGI-Ausführung zu aktualisieren. In meinem CGI wird ein TCP-Paket an einen Port gesendet. Es wird in einem versteckten Iframe aufgerufen. Hier ist mein Javascript-Code:JavaScript Aktualisierung verhindert cgi Ausführung

function xx() 
{ 

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

location.reload(true); 
} 

wenn ich location.reload cgi Werke deaktivieren, aber wenn ich es ermöglichen, nicht cgi nicht funktioniert, kein Paket gesendet wird. Ich habe versucht, Schlaf zwischen die Ausführung und das Nachladen zu bringen, aber es hat auch nicht funktioniert. Gibt es eine andere Möglichkeit, die Seite nach der CGI-Ausführung zu aktualisieren?

+0

Das CGI-Skript sollte die Aktualisierung durchführen. Die Verwendung von JavaScript zum Aktualisieren einer Seite kann zu einem unerwarteten Verhalten wie diesem führen. Lassen Sie also den Code auf der Serverseite verarbeiten. –

Antwort

0

Sie können einen onload Handler für das iframe so eingerichtet, dass die reload nicht ausgelöst, bis der iframe erfolgreich geladen wurde (die Ihr cgi ausgeführt hat, bedeutet sollten):

function xx() { 

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

Wenn Sie auch wollen Zeitverzögerung vor dem Neuladen, können Sie dies tun:

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" 
} 
+0

Vielen Dank für Ihre Antwort. Ich habe es getestet. Es funktioniert im Allgemeinen, aber manchmal wird Aktualisierung schneller als CGI. Ich bekomme falsche Ergebnisse. Ich habe versucht, vor dem erneuten Laden zu schlafen, aber es hat nicht funktioniert. – brknl

+0

@brknl - Dieses erneute Laden ist nicht möglich, bevor der Iframe basierend auf diesem Code geladen wurde. Und der Iframe wird nicht fertig geladen, bis die in .src angegebene URL geladen ist, was bedeutet, dass Ihr CGI erledigt werden muss. Ich frage mich, ob Sie irgendwo Code haben, der das Problem verursacht. – jfriend00

+0

Das CGI sendet ein Paket an irgendwoher und es verwendet das Paket und legt einige Parameter fest. Ich versuche, diese Parameter erneut mit Refresh zu bekommen, um zu verstehen, dass mein Einstellungsvorgang in Ordnung ist. Möglicherweise ist Iframe geladen, aber dieser Einstellungsvorgang ist langsamer als das. Also, wie kann ich Schlaf oder etwas anderes machen, um etwas zu warten oder gibt es eine andere Möglichkeit, die Sie vorschlagen können? – brknl

Verwandte Themen