在运行另一个页面时刷新HTML PHP页面?

时间:2012-11-15 16:29:53

标签: php html forms

我有一个页面上有大量的发票,我希望能够删除发票,然后看到它已被删除。

我目前正在使用的是(混淆其他代码,因为我不太了解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页面正在工作)但我真正能做的就是刷新我所在的页面,以便删除发票消失,表格再次空白。

思想?

1 个答案:

答案 0 :(得分: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元素销毁。