2015-10-15 108 views
0

我試圖提交一個簡單的窗體,在彈出的對話框中,然後關閉對話框。 我見過的最好的文章是Submit a form in a popup, and then close the popup,但它似乎間歇性地爲我工作。表單啓動的頁面是一個修改數據庫記錄的PHP頁面。我認爲一旦發送請求,即使啓動窗口關閉,PHP頁面也會執行。顯然不是。有時表格會更新,有時不會。看起來如果SQL操作不夠快,頁面將被關閉並且進程被終止。提交表單並關閉窗口 - 正確的方法?

下面的代碼:

<form id="xlationform" action="updatexlation.php" method="post" onsubmit="return closeForm(this);"> 
    Source: <br> 
    <textarea disabled name="sterm" rows=10 cols=50><?php echo $source ?></textarea><br><br> 
    Translation: <br> 
    <textarea name="xlt" rows=10 cols=50><?php echo $xlation ?></textarea><br><br> 
    <input type="hidden" name="id" value="<?php echo $termid ?>"> 
    <input type="submit" value="Update"> 
</form> 
<script> 
function closeForm(f) { 
    f.submit(); 
    window.close(); 
} 
</script> 

什麼工作了這一點的最好辦法?我希望窗口關閉,但數據庫操作需要先完成,如果可能的話,我不想再次查詢數據庫。謝謝你的幫助。

+0

在updatexlation.php中這樣做: – Stv

+0

使用AJAX,關閉窗口和返回false。但是,真的,你應該避免使用彈出窗口。 – PHPglue

回答

0

做它像updatexlation.php:

$e = mysqli_query(...) if ($e) { echo "<script>window.close();</script>"; } 

但正如上面提到的,避免使用彈出窗口。

+0

這工作,謝謝大家。畢竟,我最終可能不會使用彈出窗口,但這種解決方案就像是一種魅力。 –

0

響應頁面應該只是在onload事件中有window.close。