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 回答