0

javascriptを使用してページの場所をphpスクリプトに変更してWord文書を生成するボタンがあり、場所が変更されたのと同じページにファイルを出力します:

header('Content-type: application/vnd.openxmlformats-officedocument.wordprocessingml.document');
header('Content-Disposition: attachment; filename="' .$templateName . '.docx"');
readfile( $tempFileName);

とにかく、ボタンをクリックすると、php スクリプトが変更され、ボタンを含むページが保持するデータの行が変更されます。ボタンをクリックすると、Word ドキュメントが生成されるだけで、ページは更新されないため、ユーザーは、ボタンが Word ドキュメントを生成するだけで、レコードを変更しない効果があると考え、ページを更新した後にのみ、ユーザーはボタンの違いに注目してください。

私のボタンのHTMLは次のとおりです。

<input type="button" value="Generate Final Demand" onClick="self.location='DOCXGenerateDocument.php?templ=finaldemand&invoiceid=<?=$_GET['id']?>'">

ドキュメントが戻ってきたら、ページを更新するタスクをどのように達成できるかについてのアイデアはありますか?

4

3 に答える 3

0

を行う代わりにself.location、使用しますwindow.location

例えば onClick="window.location='DOCXGenerateDocument.php?templ=finaldemand&invoiceid=<?=$_GET['id']?>'"

これがうまくいくかどうか教えてください。
詳細については、MDN のこのリンクを参照してください。

于 2012-08-21T13:15:41.300 に答える
0

1 つの解決策は、ページがいつ戻るかを使用setTimeout()して推測しdocument.location.reload(true)、タイムアウトがトリガーされたときに実行することです。

きれいではありませんが、仕事を終わらせる必要があります。

于 2012-08-21T12:24:20.150 に答える
0

これを行う比較的簡単な方法は、PHP のセッション ロックを利用することです。DOCX 生成スクリプトがセッションを使用し、スクリプトが終了するまでセッションを解放しないと仮定しましょう。これで、ブラウザがセッションを使用する別の PHP スクリプトを読み込もうとすると、最初のスクリプトが完了するまで 2 番目のスクリプトが停止します。その 2 番目のスクリプトを、単純に「location.reload()」を使用して動的にロードされる Javascript にすると、必要なものが手に入ります。

ダウンロードを開始する関数:

function getDoc() {
    self.location='DOCXGenerateDocument.php?templ=finaldemand&invoiceid=<?=$_GET['id']?>';
    setTimeout("var s = document.createElement('SCRIPT'); s.src = 'read.js.php'; document.body.appendChild(s);", 100);
}

リロード スクリプト:

<?php session_start(); ?>
location.reload();
于 2012-08-21T15:44:13.363 に答える