2012-04-05 10 views
0

CGIの実行後にページを更新しようとしています。私のCGIでは、tcpパケットがポートに送られます。それは隠されたiframeで呼び出されます。ここに私のjavascriptのコードは次のとおりです。JavaScriptのリフレッシュがCGIの実行を妨げる

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が正常にロードされるまで reloadがトリガされませんように、あなたは(あなたのCGIが実行されたわけべき) iframeため onloadハンドラを設定することができます
+0

CGIスクリプトはリフレッシュ操作を処理する必要があります。 JavaScriptを使用してページを更新すると、このような予期しない動作が発生する可能性があります。そのため、サーバーサイドのコードで処理してください。 –

答えて

0

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

あなたもしたい場合

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

ご返信ありがとうございます。私はそれをテストしました。一般的に動作しますが、リフレッシュがcgiより速くなることがあります。私は間違った結果を得る。もう一度リロードする前に寝てみましたが、うまくいきませんでした。 – brknl

+0

@brknl - このコードに基づいてiframeの読み込みが完了する前にこのリロードを行うことはできません。また、.srcで指定されたURLが読み込まれるまで、iframeは読み込みを終了しません。つまり、cgiを実行する必要があります。問題の原因となっている別のコードがあるかどうか疑問に思っています。 – jfriend00

+0

cgiはパケットをどこかに送信し、パケットを使用していくつかのパラメータを設定します。私は自分の設定プロセスを理解するためにリフレッシュしてこれらのパラメータを再度取得しようとしましたがOKです。 iframeが読み込まれている可能性がありますが、この設定プロセスは遅いです。だから私はどのように睡眠や他の何かを少し待つか、またはあなたが示唆することができる他の方法がありますか? – brknl