2

請求書が大量にあるページがあり、請求書を削除してから削除されたことを確認できるようにしたいと考えています。

私が現在使用しているのは(HTML / PHPをよく知らないので、他のコードをろくでなしにする...!)

  <form name="form1" action="deleteinvoice.php" method="post">
    <input name="invoiceid" type="number" size="20"/>
    <input id="input" 
        type='submit' 
        value='Delete' 
        onclick="form1.action='deleteinvoice.php';target='my-iframe'" 
        class="button save-big" 
        disabled="disabled" >
    <input type="checkbox" 
        name="agree" 
        value="yes" 
        onclick="input.disabled = !this.checked" />Confirm you have the correct invoice number
    </form>

<iframe name="my-iframe" src="deleteinvoice.php" style="display:none"></iframe>      

これは、請求書を削除している限りは正常に機能しています (deleteinvoice.php ページが機能していることはわかっています) が、それで実際にできることは、表示していたページを更新して、削除された請求書が消え、フォームは再び空白です。

考え?

4

1 に答える 1

3

手っ取り早い PHP の回避策は、請求書を削除して現在のページをリロードする別の PHP ページを作成することです。

<?php
    ob_start();
    require 'deleteinvoice.php';
    ob_end_clean();
    Header("Location: the-page-you-were-looking-before.php");
?>

次に、フォームアクションを

onclick="form1.action='workaroundpage.php';"

注: これは、クリーンで安全なセットアップではありません。あなたはPHPにあまり精通していないと言うので、これは単なる作り話です。

上記のコードが行うことは、最初に真の「deleteinvoice.php」を、あたかもそのページであるかのようにロードすることです。そのため、請求書は以前と同様に削除されます。ただし、そのページからのすべての出力は、最初に によってバッファリングされob_start()てから破棄されるob_end_clean()ため、(クライアント側で) 空白のページと同等になります。次に、ブラウザを iframe ではなくメイン ウィンドウの元のページにリダイレクトします (出力が作成されていないかのように動作するため、リダイレクトできます)。そのため、請求書が削除されたリスト ページに戻ります。

これを行うためのはるかに洗練された (ただしそれに比例してより複雑な) 方法は、たとえば、jQuery AJAX 呼び出しと請求書 DOM 要素の破棄を使用することです。

于 2012-11-15T16:34:10.960 に答える